// VALIDA RUT Y LO FORMATEA

var iRUT = "RUT - Este campo debe ser de entre 2 a 10 digitos, solo el ultimo puede ser caracter  (ej 12.345.678-K). Por favor re-ingreselo."
var iRUT2 = "RUT - Ingresado es invalido. Por favor re-ingreselo sin separadores ni guiones."
var RUTDelimiters = ".- ";
var reRUT = /^(\d)\d|[kK]$/

function checkRUT (theField, emptyOK)
{   
	var f_dv;
	if (checkRUT.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value)))
    { 
    return true;
    }
    else
    { 
		var normalizedRUT = stripCharsInBag(theField.value, RUTDelimiters)
		normalizedRUT = normalizedRUT.toUpperCase(); 
		if (!isRUT(normalizedRUT, false)) 
			return warnInvalid (theField, iRUT);
       else  
       {   
			// Validacion del numero ingresado			
			f_largo	= normalizedRUT.length;
			f_dv		= normalizedRUT.charAt( f_largo  -1 );
			f_rut		= normalizedRUT.substring( 0, (f_largo - 1) );
			f_total	= 0;
			
			// - Solo permitir RUT's hasta 100.000.000
			if (f_rut < 100000000) {
				f_mult = 1;	
				--f_largo;
				for (var i= (f_largo-1); i >= 0; i--) {
					f_nn = normalizedRUT.charAt( i );
					if (f_mult == 7)	f_mult = 1;
					++f_mult;
					f_total += (f_nn * f_mult);
				}
				f_resto = f_total % 11;
				switch (f_resto) {
					case 1:
						f_dv_aux = 'K';
						break;
					case 0:
						f_dv_aux = '0';
						break;
					default:
						f_nn = 11 - f_resto;
						f_dv_aux = f_nn.toString(10);
				}	
				if ( f_dv_aux == f_dv ) {
					theField.value = 	reformatRUT(normalizedRUT); 
					return true;
					}
				else 
					return warnInvalid (theField, 	iRUT2);
			}		
		}
}}

function isEmpty(s)
{   
return ( (s == null) || (s.length == 0))
}

function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";

    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

function isRUT (s)
{   if (isEmpty(s)) 
       if (isRUT.arguments.length == 1) return defaultEmptyOK;
       else return (isRUT.arguments[1] == true);
    return (reRUT.test(s) && ( s.length > 1 || s.length <= digitsInRolUnicoTributario))
}

function warnInvalid (theField, s)
{   theField.focus();
    theField.select();
    alert(s);
    return false
}

function reformatRUT (RUT)
{   return (bakreformat (RUT, "", 3, ".", 3, ".", 3, "-", 1))
}

function bakreformat (s)

{   var arg;
    var sPos = s.length;
    var resultString = "";
    for (var i = (bakreformat.arguments.length- 1); (i >1 && sPos>0); i--) {
       arg = bakreformat.arguments[i];
       if (i % 2 == 1) resultString = arg + resultString;
       else {
           resultString = s.substring(sPos - arg, sPos) + resultString ;
           sPos -= arg;
       }
    }
    return resultString;
}

function ToUpper(nombreCampo){
try{
document.getElementById(nombreCampo).value = document.getElementById(nombreCampo).value.toUpperCase();
}
catch(e){}
}


//FIN VALIDA RUT

/*************************************************************************************************/

// VALIDA PATENTE
var reAlphabetic = /^[a-zA-Z]+$/
var reInteger = /^\d+$/
var defaultEmptyOK = false

function valida_pat (obj)
{
	if (obj.id == "let_pat") 
	{
		if (obj.value.length < 2 && obj.value.length >= 1 )
		{
		alert("Debe ingresar las letras de la patente");
		obj.focus();
		obj.select();
		return false;
		}
		else
		{		
		if (!valida_LETPAT(obj) )
			{
			return false;
			}
		return true
		}
	}
		
	if (obj.id == "num_pat") 
	{	
		if (!valida_NUMPAT(obj) )
		{
		return false;
		}
	return true;
	}
}

function valida_LETPAT(obj)
{
	if ( !isAlphabetic(obj.value) && obj.value != "")
		{
			alert("Debe ingresar letras de patente validas");
			obj.focus();
			obj.select();
			return false;
		}
		else
		{
			obj.value = obj.value.toUpperCase();
			document.getElementById("num_pat").focus();
			return true;
		}		
}

function valida_NUMPAT(obj)
{
	if (!isInteger(obj.value) && obj.value != "")
	{
		alert("Debe ingresar numero de patente valido");
		obj.focus();
		obj.select();
		return false;
	}else
		return true;
}

function isAlphabetic (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);

    else {
       return reAlphabetic.test(s)
    }
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    return reInteger.test(s)
}

/***************************************************************/


function setSelFindByValue(nameSelect,valueToFind)
{
	dropDown = eval('document.forms[0].' + nameSelect);	
	for(i=0;i<dropDown.options.length;i++)
	{		
		if (dropDown.options[i].value==valueToFind)
		{
			dropDown.options[i].selected=true;
			//alert("dropDown.options[i].selected="+dropDown.options[i].selected+" name="+dropDown.options[i].value)
			return;
		}		
	}	
}

function setSelFindByValue_block(nameSelect,valueToFind)
{
	dropDown = eval('document.forms[0].' + nameSelect);	
	for(i=0;i<dropDown.options.length;i++)
	{		
		if (dropDown.options[i].value==valueToFind)
		{
			dropDown.options[i].selected=true;
			dropDown.disabled = true;
			//alert("dropDown.options[i].selected="+dropDown.options[i].selected+" name="+dropDown.options[i].value)
			return;
		}
		else
		{
			dropDown.disabled = false;
		}
	}	
}

function setSelFindByValueAdd(nameSelect, valueToFind, signo){
	dropDown = eval('document.forms[0].' + nameSelect);
	for(i=0;i<dropDown.options.length;i++){
		if (dropDown.options[i].value==valueToFind){
			dropDown.options[i].selected=true;
			return;
		}
	}								
	dropDown.options[0] = new Option(signo+valueToFind,valueToFind);			
}


function statusRadio(oRadio) 
	{		
	oRadio = eval("document.Form1." + oRadio);	
		var check;
		if (oRadio.checked)
			check="S";
		else
			check="N";		
		return check;
	}
	
//Funcion que devuelve el valor seleccionado de un DropDownList
function selIndex(nameSelect){
	val = eval("document.Form1." + nameSelect + ".options[document.Form1." + nameSelect + ".selectedIndex].value");
	return val;
}

//Funcion que devuelve el texto seleccionado de un DropDownList
function selIndexText(nameSelect){
	val = eval("document.Form1." + nameSelect + ".options[document.Form1." + nameSelect + ".selectedIndex].text");
	return val;
}
	
	
		
// DisplayImg
// Función general para mosrar u ocultar Imagenes.
 function DisplayImg(src,imgId,divId,posX,posY,booleano)
  {
  var disp;
 
  if(booleano)
    disp ='block';
  else  
    disp = 'none'

	
  if (String(posX)!= "undefined")
      document.all[divId].style.left	 = posX + 'px';
   
  if (String(posY)!= "undefined")
       document.all[divId].style.top	 = posY + 'px';
 
 
      
  document.all[imgId].src			 = src;
  document.all[divId].style.display	 = disp;
  document.all[divId].style.overflow = "hidden";
  document.all["Form1"].readonly  = booleano;
  //document.getElementById("num_pat").readonly = booleano;
  //document.getElementById("let_pat").readonly = booleano;
  }
  	

// Limpia combo
// Función general para limpiar combos.
function limpiaCombo(combo)
   {
    
	for(i=combo.options.length;i>=0;i--)
	   combo.options[i] = null;	
	
	combo.options[0] = new Option('Seleccionar',0,'',''); 
	 
  }

/*  ================================================================
    FUNCTION:  isCreditCard(st)
 
    INPUT:     st - a string representing a credit card number

    RETURNS:  true, if the credit card number passes the Luhn Mod-10
		    test.
	      false, otherwise
    ================================================================ */

function isCreditCard(st) {
  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
// Uncomment the following line to help create credit card numbers
// 1. Create a dummy number with a 0 as the last digit
// 2. Examine the sum written out
// 3. Replace the last digit with the difference between the sum and
//    the next multiple of 10.

//  document.writeln("<BR>Sum      = ",sum,"<BR>");
//  alert("Sum      = " + sum);

  if ((sum % 10) == 0)
    return (true);
  else
    return (false);

} // END FUNCTION isCreditCard()



/*  ================================================================
    FUNCTION:  isVisa()
 
    INPUT:     cc - a string representing a credit card number

    RETURNS:  true, if the credit card number is a valid VISA number.
		    
	      false, otherwise

    Sample number: 4111 1111 1111 1111 (16 digits)
    ================================================================ */

function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}  // END FUNCTION isVisa()




/*  ================================================================
    FUNCTION:  isMasterCard()
 
    INPUT:     cc - a string representing a credit card number

    RETURNS:  true, if the credit card number is a valid MasterCard
		    number.
		    
	      false, otherwise

    Sample number: 5500 0000 0000 0004 (16 digits)
    ================================================================ */

function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;

} // END FUNCTION isMasterCard()





/*  ================================================================
    FUNCTION:  isAmericanExpress()
 
    INPUT:     cc - a string representing a credit card number

    RETURNS:  true, if the credit card number is a valid American
		    Express number.
		    
	      false, otherwise

    Sample number: 340000000000009 (15 digits)
    ================================================================ */

function isAmericanExpress(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;

} // END FUNCTION isAmericanExpress()




/*  ================================================================
    FUNCTION:  isDinersClub()
 
    INPUT:     cc - a string representing a credit card number

    RETURNS:  true, if the credit card number is a valid Diner's
		    Club number.
		    
	      false, otherwise

    Sample number: 30000000000004 (14 digits)
    ================================================================ */

function isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
    return isCreditCard(cc);
  return false;
}

  	

