//--------------------------------------------------------------------------------
//Constantes
//--------------------------------------------------------------------------------
var decimalPointDelimiter = ","

//--------------------------------------------------------------------------------
//Mail
//--------------------------------------------------------------------------------
//******
function isEmail(email){
//******
var atSignIndex,dotSign;
	
	if (email != ""){
		// Check for @ sign 
		//alert(email.indexOf("@"));
		atSignIndex = email.indexOf("@");
		if (atSignIndex == -1){return false;}
	
		// Check that @ sign is no at begin or end
		if (atSignIndex == 0 || atSignIndex == email.length -1){return false;}
		
		// Check for . sign 
		dotSign = email.indexOf(".");
		if (dotSign == -1){return false;}
	
		// Check that . sign is no at begin or end
		if (dotSign == 0 || dotSign == email.length -1){return false;}

		// Check that there are no spaces inside
		if (email.indexOf(" ") != -1){return false;}
	}
	
	// Passed all checks, OBS! is also email if empty
	return true;
}

//--------------------------------------------------------------------------------
//Miscelaneos de numericos
//--------------------------------------------------------------------------------
function isDigit (c){
	return ((c >= "0") && (c <= "9"));
}

//******
function isInteger (s){
//******
	var i;

	if (isEmpty(s)) {return false;}
	
	for (i = 0; i < s.length; i++){   
		if (!isDigit(s.charAt(i))){return false;}
	}

	return true;
}


//--------------------------------------------------------------------------------
//Miscelaneos de string
//--------------------------------------------------------------------------------
//******
function LimitText(fieldObj,maxChars)
//******
{
  var result = true;
  if (fieldObj.value.length >= maxChars)
	{
		fieldObj.value = fieldObj.value.substring( 0, maxChars);
		result = false;
	}
  if (window.event)
    window.event.returnValue = result;
  return result;
}

//******
function getNChars(n,ch){
//******
	var i,newStr;

	newStr = "";
	for (i = 0; i < n; i++){
		newStr = newStr + ch;
	}
	
	return newStr;
}

//******
function LTrim(str){	
//******
	while(str.length > 0 && str.charAt(0) == " "){
		str = str.substr(1,str.length)
	}

	return str
}

//******
function RTrim(str){
//******
	while(str.length > 0 && str.charAt(str.length-1) == " "){
		str = str.substr(0,str.length-1);
	}
	
	return str
}
//******
function Trim(theStr){
//******
	theStr = RTrim(theStr);
	theStr = LTrim(theStr);
	
	return theStr 
}

//******
function isEmpty(s){
//******
	return ((s == null) || (s.length == 0));
}

//******
function removeChar(s,ch){
//******
	var i,c,newStr;

	newStr = "";
	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (c != ch){
			newStr = newStr + c
		}
	}
	
	return newStr;
}

//--------------------------------------------------------------------------------

//--------------------------------------------------------------------------------
//Validación de rut
//--------------------------------------------------------------------------------

//******
function ValidaRut(rutValue){
//******
/*
	return 0; // OK
	return 1; // rut vacio
	return 2; // maximo de digitos para el rut 10
	return 3; // Presencia de caracteres en rut 
	
*/

	var rutField,rutDigits,checkDigit,minusChar
	var rutAux, rutAux1
	rutAux     = removeChar(rutValue, '.');
	
	rutAux     = removeChar(rutAux, '-');
	
	rutAux1     = Trim(rutAux);
	
	rutDigits  = Trim(rutAux1.substr(0, rutAux1.length-1));
	checkDigit = Trim(rutAux1.substr(rutAux1.length - 1, 1).toUpperCase());
	
	
	if (isEmpty(rutDigits) || isEmpty(checkDigit)){
		return 1; //rut vacio
	}

	minusChar = rutDigits.substr(rutDigits.length-1,1);

	if (minusChar == '-'){
		rutDigits = rutDigits.substr(0,rutDigits.length-1);
	}
	
	if (rutDigits.length > 9){
		return 2; // maximo de digitos para el rut 10
	}
	

	if (!isInteger(rutDigits)){
		return 3; //Presencia de caracteres en rut 
	}
		
	if (checkDigit !=  DigitoVerificador(rutDigits)){
	
		return 4; //Rut invalido
	}
	return 0;
}

function formatRut10Digits(rutValue){

	var tmpStr, rutDigits, checkDigit;

	var rutField,rutDigits,checkDigit,minusChar
	var rutAux, rutAux1
	rutAux     = removeChar(rutValue, '.');
	
	rutAux     = removeChar(rutAux, '-');
	
	rutAux1     = Trim(rutAux);
	
	rutDigits  = Trim(rutAux1.substr(0, rutAux1.length-1));
	checkDigit = Trim(rutAux1.substr(rutAux1.length - 1, 1).toUpperCase());

	// Remove trailing and add zeros at begining

	
	tmpStr = Trim(rutDigits)
	newRut = getNChars(9 - tmpStr.length,"0") + tmpStr + checkDigit
	
	return newRut;

}


//******
function FormatRut(rut){
//******

	var rutDigits,checkDigit,rutValue,newRut;

	// Remove trailing spaces and check taht there really are 10 chars

	rutValue = formatRut10Digits(Trim(rut));

	if (rutValue.length!=10){
		return "###.###.###-#"
	}

	rutDigits = rutValue.substr(0,rutValue.length-1);
	checkDigit = rutValue.substr(rutValue.length-1,1);

	// Build new rut with . and -

	newRut = rutDigits.substr(0,3)+".";
	newRut = newRut + rutDigits.substr(3,3)+".";
	newRut = newRut + rutDigits.substr(6,3);

	// Remove trailing 0 

	while (newRut.substr(0,1) == "0" || newRut.substr(0,1) == "."){
	   newRut = newRut.substr(1,newRut.length);
	}

	return newRut+"-"+checkDigit;

}

//******
function DigitoVerificador(rut) {
//******
	var i,total,cnt,div, resto,c,digver;

	total = 0;
	cnt = 2;

	for (i = rut.length - 1; i >= 0; i--) {
		c = rut.charAt(i);

		if (c < "0" || "9" < c)
			return "";

		total += parseInt(c, 10) * cnt;
		cnt++;

		if (cnt == 8){
			cnt = 2;
		}

	}


	div = Math.round(total / 11 - 0.5);
	resto = total - div * 11;

	if ((11 - resto) == 10){
		digver = "K";
	}else if ((11 - resto) == 11){
		digver = "0";
	}else{
		digver = (11 - resto) + "";
	}

	return digver;
}

function VerificarRut(theForm, theRut,  msgErr){
var rutField;

	//rutField = eval("theForm." + theRut);	
	rutField = eval(theForm + "." + theRut);
	
	if(Trim(rutField.value) == '')
		return true;
		
	if(ValidaRut(rutField.value) != 0){
		alert(msgErr);
		rutField.focus();
	}
	else
		rutField.value = FormatRut(rutField.value);			
}
function VerificarMail(theForm, theMail,  msgErr){
var mailField;

	//mailField = eval("theForm." + theMail);
	mailField = eval(theForm + "." + theMail);
	if(Trim(mailField.value) == '')
		return true;
		
	if(!isEmail(mailField.value)){
		alert(msgErr);
		mailField.focus();
	}
}
