//window.alert("sss");


function SoloNumeros(ps)
{
var ValidChars;
var s;
var vs;
s = ps;
vs = ps.value;
ValidChars = "0123456789.,-";

if(!SoloEstos(s, ValidChars))
{
ps.value = vs.substring(0,vs.length-1);
}	    
}

function SoloEstos(s, pValidChars) 
{
var ValidChars;
var sText;
ValidChars=""+pValidChars+"";
sText = ""+s.value+"";

for (i = 0; i < sText.length ; i++) 
{ 
cccc = sText.charAt(i); 
//window.alert(cccc);
if (ValidChars.indexOf(cccc) == -1) 
{
return false;
}
}

return true;
}


function esEntero(s)
{
  var i;
  for (i = 0; i < s.length; i++)
  {   
    var c = s.charAt(i);
    if (((c < "0") || (c > "9"))) return false;
  }
  return true;
}


function esImporte(s)
{
  var i;

  for (i = 0; i < s.length; i++)
  {
    var c = s.charAt(i);
    if (((c < "0") || (c > "9")) && (c!=","))
    {
      return false;
    }
    if (((c == ",") && (i == 0)) || ((c == ",") && (i == s.length-1)))
    {
      return false;
    }
    if ((c == ",") && (s.length-i > 3))
    {
      return false;
    }
    if ((c == "-") && (i != 0))
    {
      return false;
    }
  }

  if (isNaN(parseFloat(toFormatoAmericano(s))))
  {
    return false;
  }

  return true;
}

// ------------------------------------------------------------------------------------------------------------------

function getKeyCod(KeyID)
{

	//window.alert(KeyID);
	
	switch(KeyID) {

	case 8: return "BackSpace";
			break; 

	case 27: return "Esc";
			break; 

	case 13: return "Enter";
			break; 

	case 48: return "0";
			break; 
	case 49: return "1";
			break; 
	case 50: return "2";
			break; 
	case 51: return "3";
			break; 
	case 52: return "4";
			break; 
	case 53: return "5";
			break; 
	case 54: return "6";
			break; 
	case 55: return "7";
			break; 
	case 56: return "8";
			break; 
	case 57: return "9";
			break; 

	case 16: return "Shift";
			break; 

	case 17: return "Ctrl";
			break;

	case 18: return "Alt";
			break;

	case 19: return "Pause";
			break;

	case 37: return "Arrow Left";
			break;

	case 38: return "Arrow Up";
			break;

	case 39: return "Arrow Right";
			break;

	case 40: return "Arrow Down";
			break;
	}

	return "";

}

function TextAreaExpand(MiTextArea,cRows)
	{ // onfocus onblur
	MiTextArea.rows=cRows;
	}
	
function ChecklenTextArea(MiTextArea,MiMaxLen)
	{
	mitextt = MiTextArea.innerHTML;
	if (mitextt.length > MiMaxLen)
		{
		mitextt = mitextt.substring(0,MiMaxLen);
		MiTextArea.innerHTML = mitextt;
		}
	}

function returnObjById( id ) 
{ 
    if (document.getElementById) 
        var returnVar = document.getElementById(id); 
	else if (document.all != 'null') 
        var returnVar = document.all[id]; 
    else if (document.layers) 
        var returnVar = document.layers[id]; 

    return returnVar; 
} 

function returnObjByIdWin( pWin, id ) 
{ 
    if (eval(pWin).document.getElementById) 
        var returnVar = eval(pWin).document.getElementById(id); 
	else if (eval(pWin).document.all != 'null') 
        var returnVar = eval(pWin).document.all[id]; 
    else if (eval(pWin).document.layers) 
        var returnVar = eval(pWin).document.layers[id]; 

    return returnVar; 
} 

function EsMinuscula(MiVal)
	{
	if ((MiVal <= 'z' && MiVal >= 'a')	|| MiVal==' '	|| MiVal=='ń'
		|| MiVal=='á' || MiVal=='é'		|| MiVal=='í'	|| MiVal=='ó' 
		|| MiVal=='ú' || MiVal=='ö'		|| MiVal=='\'')
		return true;
		
	return false;
	}

function EsMayuscula(MiVal)
	{
	if ((MiVal <= 'Z' && MiVal >= 'A')	|| MiVal==' '	|| MiVal=='Ń'
		|| MiVal=='Á' || MiVal=='É'		|| MiVal=='Í'	|| MiVal=='Ó' 
		|| MiVal=='Ú' || MiVal=='Ö'		|| MiVal=='\'')
		return true;
		
	return false;
	}

function MakePicture(MiObj, MiPic)
	{
	var mivalor = new String(MiObj.value);
	var mipic = new String(MiPic);
	

	maxtext = mivalor.length;
	maxtext2 = mipic.length;

	MiNuevoVal = "";
	for (i=0; i < maxtext; i++)
		{
		if (i < maxtext2)
			{
			MiVal = mivalor.charAt(i);
			
			Controlado = false;
			
			//Significa que el caracter tiene que ser numerico.
			if (mipic.charAt(i)=='9')
				{
				//Si está fuera del rango de numeros, lo blanqueo
				if (MiVal > '9' || MiVal < '0') 
					{
					MiVal = " ";
					Controlado = true;
					}
				}

			//Significa que el caracter tiene que ser letras mayusculas.
			if (mipic.charAt(i)=='X' || 
				(mipic.charAt(i)=='A' && i==0) ||
				(mipic.charAt(i)=='A' && i>0 && mivalor.charAt(i-1)==' ') )
				if (!EsMayuscula(MiVal))
					{//No está dentro del rango entonces:
					if (EsMinuscula(MiVal))
						{//pregunto si son letras minusculas, si es así,
						//Lo pongo en mayusculas
						MiVal = MiVal.toUpperCase();
						Controlado = true;
						} 
					else {
						if (mipic.charAt(i)=='A')
							MiVal = mivalor.charAt(i);
						else MiVal = "";
						Controlado = true;
						}
					}

			//Significa que el caracter tiene que ser letras minusculas.
			if (mipic.charAt(i)=='x' || 
				(mipic.charAt(i)=='A' && i>0 && mivalor.charAt(i-1)!=' ') )
				if (! EsMinuscula(MiVal))
					{//No está dentro del rango entonces:
					if (EsMayuscula(MiVal))
						{//pregunto si son letras minusculas, si es así,
						//Lo pongo en MINUSCULAS
						MiVal = MiVal.toLowerCase();
						Controlado = true;
						} 
					else {
						if (mipic.charAt(i)=='A')
							MiVal = mivalor.charAt(i);
						else MiVal = "";
						Controlado = true;
						}
					}
			
			//----------------------------------------------------------------------------
			//Control de separadores:
			MiVal33 = ControlSeparador(mipic.charAt(i),MiVal,true);
			if (MiVal33 != MiVal && Controlado==false)
				{
				//window.alert("Primera: " + mivalor.slice(0,i));
				//window.alert("Agrega: " + MiVal33);
				//window.alert("Cola: " + mivalor.slice(i+1));
				mivalor = mivalor.slice(0,i) + MiVal33 + mivalor.slice(i+1);
				var mivalor2 = new String(mivalor);
				var mivalor = new String(mivalor2);
				//window.alert("Resultado: " + mivalor);
				maxtext++;
				//i++;
				i--;
				//MiNuevoVal = MiNuevoVal + MiVal33
				}
			else{
				MiNuevoVal = MiNuevoVal + MiVal
				}
			//----------------------------------------------------------------------------
			}
		}
	MiObj.value = MiNuevoVal;
	}



function ControlSeparador(MicharAt,MiVal,PoneVal)
	{
	var MiVal2 = new String(MiVal);
	//window.alert(PoneVal);
	//Control de separadores:
	
	if (MicharAt == '/' && '/' != MiVal )
		{
		if (PoneVal)		MiVal2 = "/";
		else				MiVal2 = "";
		}
	if (MicharAt == '-' && '-' != MiVal )
		{
		if (PoneVal)		MiVal2 = "-";
		else				MiVal2 = "";
		}
	if (MicharAt == ',' && ',' != MiVal )
		{
		if (PoneVal)		MiVal2 = ",";
		else				MiVal2 = "";
		}
	if (MicharAt == '.' && '.' != MiVal )
		{
		if (PoneVal)		MiVal2 = ".";
		else				MiVal2 = "";
		}
	if (MicharAt == ':' && ':' != MiVal )
		{
		if (PoneVal)		MiVal2 = ":";
		else				MiVal2 = "";
		}
	if (MicharAt == ';' && ';' != MiVal )
		{
		if (PoneVal)		MiVal2 = ";";
		else				MiVal2 = "";
		}
	if (MicharAt == '+' && '+' != MiVal )
		{
		if (PoneVal)		MiVal2 = "+";
		else				MiVal2 = "";
		}
	if (MicharAt == '~' && '~' != MiVal )
		{
		if (PoneVal)		MiVal2 = "~";
		else				MiVal2 = "";
		}
	
	if (MiVal2 != MiVal)
		return (MiVal2 + MiVal);
	else return (MiVal);
	}
	
	
function ValidaMiForm(MiForm,MisCamp)	
	{
	var mivalor = new String(MisCamp);
	var MisTipos = new String();
	var MisCampos = new String();
	var MiInt = new Number(34);
	
	mivalor = mivalor + ",";
	maxtext = mivalor.length;
	
	if (maxtext > 3)
		{//x:y,
		MisCampos = "";
		MisTipos = "";
		Tomando = "Nombre";
		for (i=0; i < maxtext; i ++)
			{
			if (Tomando == "Nombre" && mivalor.charAt(i) != ':'
				&& mivalor.charAt(i) != ',')
				{
				MisCampos = MisCampos + mivalor.charAt(i);
				}
			if (Tomando == "Valor" && mivalor.charAt(i) != ':'
				&& mivalor.charAt(i) != ',')
				{
				MisTipos = MisTipos + mivalor.charAt(i);
				}
				
			if (mivalor.charAt(i) == ':')
				Tomando = "Valor";
				
			if (mivalor.charAt(i) == ',')
				{
				Tomando = "Nombre";
				//Procedo a validar el campo
				
				if (MisTipos == "IsDate")
					{//Valido a ver si el campo es una fecha
					for (j=0; j < MiForm.elements.length;j++)
						if (MiForm.elements[j].name == MisCampos)
							{
							Val = MiForm.elements[j];
							v = Val.value;
							ErrorCarga = false;
							if (v.length != 10) ErrorCarga = true;
							
							if (!ErrorCarga)
								{
								dd		= new Number(v.charAt(0) + v.charAt(1));
								mm		= new Number(v.charAt(3) + v.charAt(4));
								aaaa	= new Number(v.charAt(6) + v.charAt(7) + v.charAt(8) + v.charAt(9));
								if (dd < 1 || dd > 31) 
									ErrorCarga = true;
								if (mm < 1 || mm > 12) 
									ErrorCarga = true;
								if (aaaa < 1900 || aaaa  > 2005) 
									ErrorCarga = true;
								}

							if (v.charAt(0) + v.charAt(1) == "")
								if (v.charAt(3) + v.charAt(4) == "")
									if (v.charAt(6) + v.charAt(7) + v.charAt(8) + v.charAt(9) == "") 
										ErrorCarga = false;
							
							if (ErrorCarga)
								{
								window.alert("Error: Fecha inválida.");								
								Val.focus();
								Val.select();
								return false;
								}
							}
					}

				finpar = "Between".length;
				if (MisTipos.substring(0,finpar) == "Between")
					{
					for (j=0; j < MiForm.elements.length;j++)
						if (MiForm.elements[j].name == MisCampos)
							{
							Val = MiForm.elements[j];
							v = Val.value;
							vi = new Number(v)
							
							Parametros = MisTipos.substring(finpar+1,MisTipos.length-1)
							MinVal = ""
							for (k=0; k <	Parametros.length && 
											Parametros.charAt(k) != ';'
											;k++)
								{
								MinVal = MinVal + Parametros.charAt(k);
								}
							MaxVal = Parametros.substring(k+1)
					
							MinVal2 = new Number(MinVal)
							MaxVal2 = new Number(MaxVal)

							//window.alert("Ver Datos:"+MinVal2+" y "+MaxVal2);

							if (vi < MinVal2 || vi > MaxVal2)
								{
								window.alert("Error: Dato fuera de rango.\nValores aceptables entre:"+MinVal2+" y "+MaxVal2);
								Val.focus();
								Val.select();
								return false;
								}
							}
					}

				finpar = "BetwDate".length;
				if (MisTipos.substring(0,finpar) == "BetwDate")
					{
					for (j=0; j < MiForm.elements.length;j++)
						if (MiForm.elements[j].name == MisCampos)
							{
							Val = MiForm.elements[j];
							v = Val.value;
							vi = new Date(v)
							
							Parametros = MisTipos.substring(finpar+1,MisTipos.length-1)
							MinVal = ""
							for (k=0; k <	Parametros.length && 
											Parametros.charAt(k) != ';'
											;k++)
								{
								MinVal = MinVal + Parametros.charAt(k);
								}
							MaxVal = Parametros.substring(k+1)
							
							MinVal.replace(" ","");
							MaxVal.replace(" ","");
							
							if (MinVal.substring(0,2) == "#D")
								{
								var x = MinVal;
								var d, s = "", o = 0, v;
								v = new Number();
								if (x.length > 2)
									{
									v = new Number(x.substring(3));
									if (x.charAt(2) == "+")
										o += v;
									if (x.charAt(2) == "-")
										o -= v;
									}
								var dd = 0, mm = 0, aaaa = 0;
								d = new Date();
								dd = d.getDate() + o;
								mm = d.getMonth();
								aaaa = d.getYear();
								d = new Date(aaaa,mm,dd);
								s += (d.getDate()) + "/";
								s += (d.getMonth() + 1) + "/";
								s += d.getYear();
								MinVal = s;
								}
								
							if (MaxVal.substring(0,2) == "#D")
								{
								var x = MaxVal;
								var d, s = "", o = 0, v;
								v = new Number();
								if (x.length > 2)
									{
									v = new Number(x.substring(3));
									if (x.charAt(2) == "+")
										o += v;
									if (x.charAt(2) == "-")
										o -= v;
									}
								var dd = 0, mm = 0, aaaa = 0;
								d = new Date();
								dd = d.getDate() + o;
								mm = d.getMonth();
								aaaa = d.getYear();
								d = new Date(aaaa,mm,dd);
								s += (d.getDate()) + "/";
								s += (d.getMonth() + 1) + "/";
								s += d.getYear();
								MaxVal = s;
								}
					
							MinVal2 = new Date(MinVal)
							MaxVal2 = new Date(MaxVal)
							
							//window.alert("Ver Datos:"+MinVal2+" y "+MaxVal2);

							if (vi < MinVal2 || vi > MaxVal2)
								{
								window.alert("Error: Fecha fuera de rango.\nValores aceptables entre:"+MinVal+" y "+MaxVal);
								Val.focus();
								Val.select();
								return false;
								}
							}
					}
					
				finpar = "NotEmpty".length;
				if (MisTipos.substring(0,finpar) == "NotEmpty")
					{
					DebeEstarChequeado = false;
					EstaChequeado = false;
					CheckObj = "";
					for (j=0; j < MiForm.elements.length;j++)
						if (MiForm.elements[j].name == MisCampos)
							{
							Val = MiForm.elements[j];
							if ((MiForm.elements[j].type).toUpperCase()=="RADIO")
								{
								DebeEstarChequeado = true;
								if (MiForm.elements[j].checked)
									EstaChequeado = true;
								
								CheckObj = Val;
								}
							
							v = Val.value;
							if (v.length == 0)
								{
								window.alert("Error: Dato en blanco.\nEste campo no puede quedar vacio.");
								Val.focus();
								Val.select();
								return false;
								}
							if ("NotEmpty".length < MisTipos.length)
								{
								LargoMinimo = MisTipos.substring(	"NotEmpty".length+1,
																	MisTipos.length-1);
								LargoMinimo = new Number(LargoMinimo);
								//window.alert(LargoMinimo);
								if (v.length < LargoMinimo)
									{
									window.alert("Error: Dato incompleto.\nEste campo no puede tener menos de "+LargoMinimo+" caracteres.");
									Val.focus();
									Val.select();
									return false;
									}
								}
							}
						
						if (DebeEstarChequeado && !EstaChequeado)
							{
							window.alert("Error: Dato incompleto.\nSe debe elegir uno de la lista");
							CheckObj.focus();
							CheckObj.select();
							return false;
							}
					}
				MisCampos = "";
				MisTipos = "";
				}
			}//fin de if (mivalor.charAt(i) == ',')

		}//Fin del for..
	
	//window.alert("Validación Ok!");
	
	return true;
	}//fin de ValidaMiForm(MiForm,MisCamp)



	function MakePicture2(MiObj, MiPic)
		{
		var mivalor = new String(MiObj.value);
		var mipic = new String(MiPic);
		var MiNuevoVal = new String(MiPic);
	
		if (mipic.length > mivalor.length)
			{//Tengo que poner el picture porque es la primera vez que entro.
			MiNuevoVal = "";
			for (i=0; i < mipic.length; i ++)
				{
				if (mipic.charAt(i)=='9' || 
						mipic.charAt(i)=='x' || 
						mipic.charAt(i)=='X' )
					{
					if (i==0)//Agrego Lo que tipie
						MiNuevoVal = MiNuevoVal + ValidaCaracter(mipic.charAt(i),mivalor.charAt(i));
					else
						MiNuevoVal = MiNuevoVal + "_";
					}
				else MiNuevoVal = MiNuevoVal + mipic.charAt(i);
				}
			MiObj.value = MiNuevoVal;
			}
		else if (mipic.length == mivalor.length)
				{
				MiObj.value = "";
				}
		else if (mipic.length < mivalor.length)
				{
				//Se supone que me escribieron cuando 
				//Tomo lo que me ingresaron y 
				MiNuevoVal = "";
				NuevaLetra = (mivalor.charAt(mivalor.length-1)).toString();
				
				for (i=0; i < mivalor.length-1 ; i ++)
					{
					if (mivalor.charAt(i)=='_' && NuevaLetra != "Salgo")
						{
						MiNuevoVal = MiNuevoVal + ValidaCaracter(mipic.charAt(i),NuevaLetra);
						NuevaLetra = "Salgo";
						}
					else MiNuevoVal = MiNuevoVal + ValidaCaracter(mipic.charAt(i),mivalor.charAt(i));
					}
				MiObj.value = MiNuevoVal;
				}
		}
	
	function ValidaCaracter(CharPic,CharVal)
		{
		MiVal = CharVal;
		
		if (CharPic == '9' && (CharVal > '9' || CharVal < '0'))	MiVal = '_';
		if (CharPic == 'x' && !EsMinuscula(CharVal))
			{
			if (EsMayuscula(CharVal))
				MiVal = CharVal.toLowerCase();
			else MiVal = '_';
			}
		if (CharPic == 'X' && !EsMayuscula(CharVal))
			{
			if (EsMinuscula(CharVal))
				MiVal = CharVal.toUpperCase();
			else MiVal = '_';
			}
		if (CharPic == '/' && CharVal != '/')		MiVal = '/';
		if (CharPic == '-' && CharVal != '-')		MiVal = '-';
		if (CharPic == ',' && CharVal != ',')		MiVal = ',';
		if (CharPic == '.' && CharVal != '.')		MiVal = '.';
		if (CharPic == ':' && CharVal != ':')		MiVal = ':';
		if (CharPic == ';' && CharVal != ';')		MiVal = ';';
		if (CharPic == '+' && CharVal != '+')		MiVal = '+';
		if (CharPic == '~' && CharVal != '~')		MiVal = '~';
			
		if (MiVal != CharVal)
			MiVal = CharVal;
			
		return MiVal;
		}

