/*
 *  mouseWait: Funcion que cambia el cursor a HourGlass (Wait).
 *
 */
function mouseWait()
{
  document.body.style.cursor = "wait";
}

/*
 *  FormatOnlyDouble: Funcion que valida el ingreso solo de digitos y el punto decimal.
 *
 *  ctl: control dentro del formulario donde se ingresa el numero.
 *  dec: numero de decimales con que contara el numero.
 *
 */
function FormatOnlyDouble(ctl, dec)
{
  OnlyDouble(ctl);
  FormatDouble(ctl, dec);
}

/*
 *  FormatOnlyNumber: Funcion que valida el ingreso solo de digitos.
 *
 *  ctl: control dentro del formulario donde se ingresa el numero.
 *
 */
function FormatOnlyNumber(ctl)
{
  OnlyNumber(ctl);
  FormatNumber(ctl);
}


/*
 *  FormatDv: Funcion que valida el ingreso solo de digitos verificadores de rut.
 *            acepta digitos entre 0-9 y la letra K (k).
 *
 *  ctl: control dentro del formulario donde se ingresa el digito verificador.
 *
 */
function FormatOnlyDv(ctl)
{
  OnlyDv(ctl);
  FormatDv(ctl);
}

/*
 *  ValidaDigitoVerificador: Funcion que valida un numero con su digito verificador (base 11).
 *
 *  numero: control dentro del formulario donde se ingresa el numero del rut.
 *  digito: control dentro del formulario donde se ingresa el digito verificador.
 *
 */
function ValidaDigitoVerificador(numero, digito)
{
  var dig = DigitoVerificador( UnformatNumber( numero.value));
  return dig == digito.value.toUpperCase();
}

function UnformatNumber(value)
{
var t;
var caracter;
var i;
var sts;
   
	sts = value;

	if (sts.length == 0 )
		return "0";

	t = "";
 
	for (i=0;i<sts.length;i++)
	{
		caracter = sts.substring(i, i + 1);
		
		if (caracter != ",")
			t = t + caracter;
	}

	return t;
} 

function DigitoVerificador(n)
{
  var base;
  
  j=0;
  sum=0;
  sts=0;

  base = 11;

  for(i = n.length - 1; i >= 0; i--)
	{
     sum += (n.substring(i,i+1)-'0')*((j++) % 6 + 2);
	}    

  sts = base- sum % base;

  if(sts==10)    sts='K';
  if(sts==11)    sts='0';
   
  return(sts);
}

Anos=new Array()   
   Anos[0] = 31;
   Anos[1] = 29;
   Anos[2] = 31;
   Anos[3] = 30;
   Anos[4] = 31;
   Anos[5] = 30;
   Anos[6] = 31;
   Anos[7] = 31;
   Anos[8] = 30;
   Anos[9] = 31;
   Anos[10] = 30;
   Anos[11] = 31;


/*
 *  ValidaFecha: Funcion que valida el ingreso de una fecha valida
 *
 *  dia: control dentro del formulario donde se ingresa el dia de una fecha.
 *  mes: control dentro del formulario donde se ingresa el mes de una fecha.
 *  ano: control dentro del formulario donde se ingresa el año de una fecha.
 *
 */ 
function ValidaFecha(dia, mes, ano)
{
   if (!(AnoValido(ano)))
      return false;
      
   if ((mes.value > 12) || (dia.value < 1))
      return false;
      
   if (mes.value != 2)
   {
      if (dia.value > Anos[mes.value-1])
         return false;
   }
   else
   {
    if (EsBiciesto(ano.value))
    {
       if (dia.value > Anos[mes.value-1] + 1)
           return false;
    }   
    else 
    {
       if (dia.value > Anos[mes.value-1]) 
          return false;
    }         
   }
   
   return true;   
}



/*
 *   funciones privadas.
 *
 */

function EsBiciesto(ano)
{
   if ((((ano % 4) == 0) && ((ano %100) != 0)) || ((ano % 400) == 0))
      return true;
   return false;
}

function FormatDv(ctl)
{
  if((ctl.value.substring(0,1)=='k') || (ctl.value.substring(0,1)=='K'))
    ctl.value="K";  
}

function mask (InString, Mask)  {
    LenStr = InString.length;
    LenMsk = Mask.length;
    if ((LenStr==0) || (LenMsk==0))
        return(false);
    if (LenStr!=LenMsk)
        return(false);
    TempString=""
    for (Count=0; Count<=InString.length; Count++)  {
        StrChar = InString.substring(Count, Count+1);
        MskChar = Mask.substring(Count, Count+1);
        if (MskChar=='#') {
            if(!isNumberChar(StrChar))
                return(false);
        }
        else if (MskChar=='?') {
            if(!isAlphabeticChar(StrChar))
                return(false);
        }
        else if (MskChar=='!') {
            if(!isNumOrChar(StrChar))
                return(false);
        }
        else if (MskChar=='*') {
        }
        else {
            if (MskChar!=StrChar) 
                return(false);
        }
    }
    return (true);
}

function mask(InString, Mask, minimo, maximo)
{
   for (i=minimo; i<=maximo; i++)
   {
      if (!(mask(InString.substring(i-1, i), Mask)))
         return false;
   }
   return true;
}

function FormatDouble(ctl, dec)
{
var salida;
var t;
var caracter;
var separador;
var i;
var largo;
var str;
var nn;
var esNegativo;
var posDec;
var contador;
var SIMBOLO;
var entero;
var sts;
var stsDecimales;
var stsDecimalesTmp = "";

    SIMBOLO = ","
   
	sts = ctl.value;
	entero = sts;

	if (sts.length == 0 )
		return false;
	
	if ((posDec = sts.indexOf (".", posDec)) != -1)
	{
		stsDecimales = sts.substring(posDec +1);

		entero = sts.substring( 0, posDec);

		if(stsDecimales.length>0)
		{
			for (i=0;i<stsDecimales.length;i++)
			{
				caracter = stsDecimales.substring(i, i + 1);

				if (! isNaN(caracter))
					stsDecimalesTmp = stsDecimalesTmp + caracter;
			}

			stsDecimales = stsDecimalesTmp;
		}

		if (stsDecimales.length > dec)
			stsDecimales = stsDecimales.substring(0, stsDecimales.length - 1);
	}

	t = "";
 
	for (i=0;i<entero.length;i++)
	{
		caracter = entero.substring(i, i + 1);
		
		if (caracter != SIMBOLO && (caracter == "." || ! isNaN(caracter)) )
			t = t + caracter;
		else
			nn = nn - 1;
	}

	salida = "";
	
	while(i>=0)
	{
		separador = "";
	
		if ( t.substring(0,1) != "-" )
		{
			if (i == (t.length - 4) || i == (t.length - 7) || (i == (t.length - 10)) || (i == (t.length - 13)))
			{
				separador = SIMBOLO;
				nn++;
			}
		} else {
			if ( i != 0 )
			{
				if (i == (t.length - 4) || i == (t.length - 7) || (i == (t.length - 10)) || (i == (t.length - 13)))
				{
					separador = SIMBOLO;
					nn++;
				}
			}
		}
	
		salida = t.substring(i, i + 1) + separador + salida;
		i--;
   }
   
	if (posDec != -1)
		ctl.value = salida + "." + stsDecimales;
	else
		ctl.value = salida;
}

function FormatNumber(ctl)
{
var salida;
var t;
var caracter;
var separador;
var i;
var largo;
var str;
var nn;
var esNegativo;
var SIMBOLO;

    SIMBOLO = ",";   
	sts = ctl.value;

	if (sts.length == 0 )
		return false;

	t = "";
 
	for (i=0;i<sts.length;i++)
	{
		caracter = sts.substring(i, i + 1);

		if (caracter != SIMBOLO && (caracter == "." || ! isNaN(caracter)) )
				t = t + caracter;
		else
			nn = nn - 1;
	}

	salida = "";
	
	while(i>=0)
	{
		separador = "";
	
		if ( t.substring(0,1) != "-" )
		{
			if (i == (t.length - 4) || i == (t.length - 7) || (i == (t.length - 10)) || (i == (t.length - 13)))
			{
				separador = SIMBOLO;
				nn++;
			}
		} else {
			if ( i != 0 )
			{
				if (i == (t.length - 4) || i == (t.length - 7) || (i == (t.length - 10)) || (i == (t.length - 13)))
				{
					separador = SIMBOLO;
					nn++;
				}
			}
		}
	
		salida = t.substring(i, i + 1) + separador + salida;
		i--;
   }

	ctl.value = salida;
}
 
function OnlyNumber(ctl)
{
   var str;
   var largo;

   str = ctl.value;
   largo = str.length;   
   
   if (!(isNumberChar(str.substring(largo - 1,largo))))
   {
      ctl.value = str.substring(0, largo - 1);
   } 
   return true;
}

function OnlyDouble(ctl)
{
   var str;
   var strDecimales;
   var largo;
   var contador;
   var pos;
   var i;

   str = ctl.value;
   largo = str.length;   
   
	contador = 0;
	pos = 0;
	
	for(i=0;i<largo;i++)
	{
		if ((pos = str.indexOf (".", pos)) == -1 )
		{
			break;
		} else {
			contador++;
			pos++;
			if (contador > 1)
			{
				ctl.value = str.substring(0, largo - 1);
				return true;
			}
		}
   }
   
   if (!(isDoubleChar(str.substring(largo - 1,largo))))
   {
      ctl.value = str.substring(0, largo - 1);
   } 
   return true;
}

function OnlyDv(ctl)
{
   var str;
   var largo;
   
   str = ctl.value;
   largo = str.length;   


   if(largo > 1)
   {
    ctl.value = str.substring(1,2);
    largo --;
   }
   
   if (!(isDv(str.substring(largo - 1,largo))))
   {
      ctl.value = str.substring(0, largo - 1);
   } 

   return true;
}

function isNumberChar (InString)  {
    if(InString.length!=1) 
        return (false);
    RefString="1234567890";
    if (RefString.indexOf (InString, 0)==-1) 
        return (false);
    return (true);
}

function isDv (InString)  {
    if(InString.length!=1) 
        return (false);
    RefString="1234567890Kk";
    if (RefString.indexOf (InString, 0)==-1) 
        return (false);
    return (true);
}

function isDoubleChar (InString)  
{
	if(InString.length!=1) 
        return (false);
    
    RefString="1234567890.";
    
    if (RefString.indexOf (InString, 0)==-1) 
        return (false);
    
    return (true);
}

function AnoValido(objeto)
{
  if (!(mask(objeto.value,"####")))
  { 
    objeto.focus();
    return false;
  }

  if ((objeto.value < 1900) || (objeto.value > 2050))
  {
	 objeto.focus();
	 return false;
  }     
   return true;
}

function ValTxt(objeto,mensaje)
{
   if (objeto.value == "")
   {
      alert(mensaje);
      objeto.focus();
      return false;
   }
   else
      return true;
}

function ValCbo(objeto,  mensaje)
{
   if (objeto.selectedIndex == 0)
   {
      alert(mensaje);
      objeto.focus();
      return false;
   }
   else
      return true;
}

function FormatoDos(obj)
{
   if ((obj.value < 10) && (obj.value.length == 1))
   {
      obj.value = "0" + obj.value
   }
}

function verificarfechama(m,a){

	if(m.value == '')
		{
		alert("Ingrese el mes");
		m.focus();
		return false;
		}
	if(a.value == '')
		{
		alert("Ingrese el año");
		a.focus();
		return false;
		}

	if ((m.value < 1)||(m.value > 12)) {
		alert("Ingrese un mes válido");
		m.focus();
		return false;
	}

	if ((a.value < 1901)||(a.value > 2150)) {
		alert("Ingrese un año válido(1901-2150)");
		a.focus();
		return false;
	}

return true ;
}

function verificarfechadma(d,m,a){

	if(d.value == '')
		{
		alert("Ingrese el día");
		d.focus();
		return false;
		}
	if(m.value == '')
		{
		alert("Ingrese el mes");
		m.focus();
		return false;
		}
	if(a.value == '')
		{
		alert("Ingrese el año");
		a.focus();
		return false;
		}

	if ((m.value == 1)||(m.value == 3)||(m.value == 5)||(m.value == 7)||(m.value == 8)||(m.value == 10)||(m.value == 12)){
		if ((d.value < 1)||(d.value > 31)){
			alert("Ingrese una cantidad de días válida(máx 31)");
			d.focus();
			return false;
		}
	 }
	else{
		if ((m.value == 4)||(m.value == 6)||(m.value == 9)||(m.value == 11)){
			if ((d.value < 1)||(d.value > 30)){
				alert("Ingrese una cantidad de días válida(máx 30)");
				d.focus();
				return false;
			}
		}
		if (m.value == 2){
			if ((a.value % 4) == 0) {
				if ((d.value < 1)||(d.value > 29)){
					alert("Ingrese una cantidad de días válida(máx 29)");
					d.focus();
					return false;
				}
			 }
			else {
				if ((d.value < 1)||(d.value > 28)){
					alert("Ingrese una cantidad de días válida(máx 28)");
					d.focus();
					return false;
				}
			}
		}
	}

	if ((m.value < 1)||(m.value > 12)) {
		alert("Ingrese un mes válido");
		m.focus();
		return false;
	}
		
	if ((a.value < 1901)||(a.value > 2150)) {
		alert("Ingrese un año válido(1901-2150)");
		a.focus();
		return false;
	}

return true ;

}

  function contador(campo, campoCuenta, max) 
    {
      if (campo.value.length > max)
        campo.value = campo.value.substring(0, max);
      else 
        campoCuenta.value = max - campo.value.length;
    }


function OnlyNumberAndSlash(ctl)
{
   var str;
   var largo;

   str = ctl.value;
   largo = str.length;   
   

   if (!(isNumberChar(str.substring(largo - 1,largo))))
   {
      if(str.substring(largo - 1,largo)!="/")
        {
          ctl.value = str.substring(0, largo - 1);
        }
      else
        {
        if((largo!=3)&&(largo!=6))
          ctl.value = str.substring(0, largo - 1);
        }
        
   }
   return true;
}

  function duplicar(campo, campoDos, max) 
    {
      if (campo.value.length > max)
        campoDos.value = campo.value.substring(0, max);
      else 
        campoDos.value = campo.value.substring(0, campo.value.length);
    }
    
    
    
/*
 *  Funcion para el ingreso de numeros con decimal perimte solo la cantidad
 *  de numeros sin un punto....
 */

