var charsNumeros="0123456789";
var charsNumerosEspacio=" 0123456789";
var charsLetrasNumeros="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzáéíóúÁÉÍÓÚñÑ0123456789";

function charsValidos(strIn,charSet) {
  var CrtrAux;
  var iaux=0;
  for (var i=0; i < strIn.length; i++) {
    CrtrAux = strIn.charAt(i);
    if (charSet.indexOf(CrtrAux) != -1) iaux++;
  }
  if ((iaux != strIn.length) || (strIn.length==0)) return false
  else return true;
}

function validar_carro(formulario){
	if ( formulario.carro_accion.value != 'Enviar' ) return true
	flag_alert = false
	mensaje_error = ''
	elemento = ''
	if ( formulario.form_comentario.value.length > 255 ){
		flag_alert = true
		mensaje_error = 'Por favor escriba un Comentario que no supere los 255 caracteres'
		elemento = formulario.form_comentario
	}
	if ( formulario.form_email.value != '' && !IsEmailValid(formulario.form_email.value) ){
		flag_alert = true
		mensaje_error = 'Por favor indique correctamente su dirección de E-Mail'
		elemento = formulario.form_email
	}
	if ( formulario.form_email.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su E-Mail'
		elemento = formulario.form_email
	}
	if ( formulario.form_fax.value != '' ){
		valida_fax = IsPhoneValid(formulario.form_fax.value,'Fax')
		if ( valida_fax != '' ){
			flag_alert = true
			mensaje_error = valida_fax
			elemento = formulario.form_fax
		}
	}
	if ( formulario.form_telefono.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su Teléfono'
		elemento = formulario.form_telefono
	}
	else{
		valida_telefono = IsPhoneValid(formulario.form_telefono.value,'Teléfono')
		if ( valida_telefono != '' ){
			flag_alert = true
			mensaje_error = valida_telefono
			elemento = formulario.form_telefono
		}
	}
	if ( formulario.form_rut.value != '' && !checkRut(formulario.form_rut.value) ){
		flag_alert = true
		mensaje_error = 'Por favor indique correctamente su RUT. Escríbalo sin puntos ni guión'
		elemento = formulario.form_rut
	}
	if ( formulario.form_nombre.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su Nombre'
		elemento = formulario.form_nombre
	}
	if ( formulario.form_password2.value != formulario.form_password.value ){
		flag_alert = true
		mensaje_error = 'Por favor repita correctamente la Password'
		elemento = formulario.form_password2
	}
	if ( formulario.form_password2.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor repita la Password'
		elemento = formulario.form_password2
	}
	if ( !charsValidos(formulario.form_password.value,charsLetrasNumeros) ){
		flag_alert = true
		mensaje_error = 'La Password sólo puede contener letras y números'
		elemento = formulario.form_password
	}
	if ( formulario.form_password.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique la Password'
		elemento = formulario.form_password
	}
	if ( !charsValidos(formulario.form_username.value,charsLetrasNumeros) ){
		flag_alert = true
		mensaje_error = 'El Username sólo puede contener letras y números'
		elemento = formulario.form_username
	}
	if ( formulario.form_username.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique el Username'
		elemento = formulario.form_username
	}
	if ( !flag_alert )
		return true
	else{
		if ( mensaje_error ) alert (mensaje_error)
		if ( elemento ) elemento.focus()
		return false
	}
}

function validar_contacto(formulario){
	flag_alert = false
	mensaje_error = ''
	elemento = ''
	if ( formulario.contacto_texto.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su Pregunta o Comentario'
		elemento = formulario.contacto_texto
	}
	if ( formulario.contacto_telefono.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su Teléfono'
		elemento = formulario.contacto_telefono
	}
	/*
	else{
		valida_telefono = IsPhoneValid(formulario.contacto_telefono.value,'Teléfono')
		if ( valida_telefono != '' ){
			flag_alert = true
			mensaje_error = valida_telefono
			elemento = formulario.contacto_telefono
		}
	}
	*/
	if ( formulario.contacto_email.value != '' && !IsEmailValid(formulario.contacto_email.value) ){
		flag_alert = true
		mensaje_error = 'Por favor indique correctamente su dirección de E-Mail'
		elemento = formulario.contacto_email
	}
	if ( formulario.contacto_email.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su E-Mail'
		elemento = formulario.contacto_email
	}
	if ( formulario.contacto_nombre.value == '' ){
		flag_alert = true
		mensaje_error = 'Por favor indique su Nombre'
		elemento = formulario.contacto_nombre
	}
	if ( !flag_alert )
		return true
	else{
		if ( mensaje_error ) alert (mensaje_error)
		if ( elemento ) elemento.focus()
		return false
	}
}

function IsEmailValid(email){
	var EmailOk  = true
	var AtSym    = email.indexOf('@')
	var Period   = email.lastIndexOf('.')
	var Space    = email.indexOf(' ')
	var Length   = email.length - 1   // Array is from 0 to length-1
	if ((AtSym < 1) ||                     // '@' cannot be in first position
	    (Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
	    (Period == Length ) ||             // Must be atleast one valid char after '.'
	    (Space  != -1))                    // No empty spaces permitted
	   {  
	      EmailOk = false
	   }
	return EmailOk
}

function IsPhoneValid(phone,texto){
	var primerGuion = phone.indexOf('-')
	var ultimoGuion = phone.lastIndexOf('-')
	var codigoPais = phone.substring(0,primerGuion)
	var codigoArea = phone.substring(primerGuion+1,ultimoGuion)
	var numeroTelefono = phone.substring(ultimoGuion+1)
	var mensaje_error = ''
	if ( numeroTelefono.length < 3 || numeroTelefono.length > 8 )																								// el numero de telefono tiene que tener entre 3 y 8 caracteres
		mensaje_error = 'Por favor ingrese correctamente el Número de su '+texto
	if ( !charsValidos(numeroTelefono,charsNumerosEspacio) )																										// el numero de telefono solo puede tener numeros o espacios
		mensaje_error = 'Por favor ingrese correctamente el Número de su '+texto
	if ( !charsValidos(codigoArea,charsNumerosEspacio) )																												// el codigo de area solo puede tener numeros o espacios
		mensaje_error = 'Por favor ingrese correctamente el Código de Area de su '+texto
	if ( !charsValidos(codigoPais,charsNumerosEspacio) )																												// el codigo de pais solo puede tener numeros o espacios
		mensaje_error = 'Por favor ingrese correctamente el Código de País de su '+texto
	if ( codigoArea.length < 1 || codigoArea.length > 3 )																												// el codigo de area tiene que tener entre 1 y 3 caracteres
		mensaje_error = 'Por favor ingrese correctamente el Código de Area de su '+texto
	if ( codigoPais.length < 1 || codigoPais.length > 4 )																												// el codigo de pais tiene que tener entre 1 y 4 caracteres
		mensaje_error = 'Por favor ingrese correctamente el Código de País de su '+texto
	if ( primerGuion == 0 ) 																																										// el primer guion no puede estar al principio
		mensaje_error = 'Por favor ingrese el Código de Area de su '+texto+' (vea Ejemplos)'
	if ( codigoPais.indexOf('-') != -1 || codigoArea.indexOf('-') != -1 || numeroTelefono.indexOf('-') != -1 )	// la cantidad de guiones no puede ser mayor a 2
		mensaje_error = 'Por favor ingrese correctamente su '+texto+' (vea Ejemplos)'
	if ( ultimoGuion == primerGuion )																																						// la cantidad de guiones no puede ser 1
		mensaje_error = 'Por favor ingrese correctamente su '+texto+' (vea Ejemplos)'
	if ( primerGuion == -1 )																																										// la cantidad de guiones no puede ser 0
		mensaje_error = 'Por favor ingrese correctamente su '+texto+' (vea Ejemplos)'
	return mensaje_error
}


// Validacion de RUT

function checkRut(rut)
{
  var tmpstr = "";
  for ( i=0; i < rut.length ; i++ )
    if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
      tmpstr = tmpstr + rut.charAt(i);
  rut = tmpstr;
  largo = rut.length;
// [VARM+]
  tmpstr = "";
  for ( i=0; rut.charAt(i) == '0' ; i++ );
  for (; i < rut.length ; i++ )
     tmpstr = tmpstr + rut.charAt(i);
  rut = tmpstr;
  largo = rut.length;
// [VARM-]
  if ( largo < 2 )
    return false;
  for (i=0; i < largo ; i++ )
  {
    if( (rut.charAt(i) != '0') && (rut.charAt(i) != '1') && (rut.charAt(i) !='2') && (rut.charAt(i) != '3') && (rut.charAt(i) != '4') && (rut.charAt(i) !='5') && (rut.charAt(i) != '6') && (rut.charAt(i) != '7') && (rut.charAt(i) != '8') && (rut.charAt(i) != '9') && (rut.charAt(i) !='k') && (rut.charAt(i) != 'K') )
      return false;
  }
 
  var invertido = "";
  for ( i=(largo-1),j=0; i>=0; i--,j++ )
    invertido = invertido + rut.charAt(i);
  var drut = "";
  drut = drut + invertido.charAt(0);
  drut = drut + '-';
  cnt = 0;
  for ( i=1,j=2; i<largo; i++,j++ )
    {
    if ( cnt == 3 )
    {
      drut = drut + '.';
      j++;
      drut = drut + invertido.charAt(i);
      cnt = 1;
    }
    else
    {
      drut = drut + invertido.charAt(i);
      cnt++;
    }
  }
  invertido = "";
  for ( i=(drut.length-1),j=0; i>=0; i--,j++ )
  {
  	if (drut.charAt(i)=='k')
  		invertido = invertido + 'K';
  	else
    	invertido = invertido + drut.charAt(i);
  }
  //document.ActionPersona.CustLoginIDAux.value = invertido;
  if(!checkDVPersona(rut))
    return false;
  return true;
}

function checkDVPersona(crut)
{
  largo = crut.length;
  if(largo < 2){
    return false;
  }
  if(largo > 2){
    rut = crut.substring(0, largo - 1);
  }
  else{
    rut = crut.charAt(0);
  }
  dv = crut.charAt(largo-1);

  if(!checkCDVPersona(dv))
     return false;

  if(rut == null || dv == null){
      return false;
  }

  var dvr = '0';
  suma = 0;
  mul  = 2;
  for (i= rut.length -1 ; i >= 0; i--){
    suma = suma + rut.charAt(i) * mul;
    if(mul == 7){
      mul = 2;
    }
    else{
      mul++;
    }
  }
  res = suma % 11;
  if (res==1){
    dvr = 'k';
  }
  else{
    if(res==0){
      dvr = '0';
    }
    else{
      dvi = 11-res;
      dvr = dvi + "";
    }
  }
  if(dvr != dv.toLowerCase()){
    return false;
  }
  return true;
}

function checkCDVPersona(dvr)
{
  dv = dvr + "";
  if(dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K'){
    return false;
  }
  return true;
}


// transferencia de datos de un formulario a otro

function transferencia(Carro,Encabezado){
	Encabezado.form_username.value = Carro.form_username.value;
	Encabezado.form_password.value = Carro.form_password.value;
	Encabezado.form_password2.value = Carro.form_password2.value;
	Encabezado.form_nombre.value = Carro.form_nombre.value;
	Encabezado.form_empresa.value = Carro.form_empresa.value;
	Encabezado.form_razon_social.value = Carro.form_razon_social.value;
	Encabezado.form_rut.value = Carro.form_rut.value;
	Encabezado.form_ciudad_pais.value = Carro.form_ciudad_pais.value;
	Encabezado.form_telefono.value = Carro.form_telefono.value;
	Encabezado.form_fax.value = Carro.form_fax.value;
	Encabezado.form_email.value = Carro.form_email.value;
	Encabezado.form_comentario.value = Carro.form_comentario.value;
}
