// Funciones atómicas para comprobación de formularios

//Calcula dígito verificador del rut de chile
function dv(T){var M=0,S=1;for(;T;T=Math.floor(T/10))
		S=(S+T%10*(9-M++%6))%11;return S?S-1:'k';}
		

// Empty: devuelve verdadero si value es vacio
function Empty(value) {
    var pattern=new RegExp("^[ ]*$");
    return value.match(pattern) || value.length==0;
}

// isInteger: devuelve verdero si value es un entero
function isInteger(value) {
    var pattern=new RegExp("^[0-9]+$");
    return value.match(pattern);
}

// isDouble: devuelve verdero si value es un double
function isDouble(value) {
    var pattern=new RegExp("^[0-9]+(\\.[0-9]+){0,1}$");
    return value.match(pattern);
}

// isMail: devuelve verdadero si value es una direccion de correo valida
function isMail(value) {
    var pattern=new RegExp("^([a-zA-Z0-9_.+\\-]+\\.{0,1})+@([a-zA-Z0-9_\\-]+\\.)+[a-zA-Z0-9_\\-]+$");
    return value.match(pattern);
}

// isAlpha: devuelve verdadero si la cadena contiene solo caracteres alfabeticos o espacios
function isAlpha(value) {
	var pattern=new RegExp("^[a-zA-Z\\sñÑáÁéÉíÍóÓúÚüÜ]+$");
    return value.match(pattern);
}

// isAlphaNum: devuelve verdadero si la cadena contiene solo caracteres alfabeticos, numeros y espacio
function isAlphaNum(value) {
	var pattern=new RegExp("^[a-zA-Z0-9\\sñÑáÁéÉíÍóÓúÚüÜ]+$");
    return value.match(pattern);
}

// isAlphaNum2: devuelve verdadero si la cadena contiene solo caracteres alfabeticos, numeros, punto, coma, guiones y espacio
function isAlphaNum2(value) {
	var pattern=new RegExp("^[a-zA-Z0-9\\s.,-ñÑáÁéÉíÍóÓúÚüÜ&]+$");
    return value.match(pattern);
}

// isFono: devuelve verdadero si la cadena contiene solo numeros, paréntesis, guiones y espacio
function isFono(value) {
	var pattern=new RegExp("^[0-9\\s.,-]+$");
    return value.match(pattern);
}

// LTrim: Quita espacios en blanco a la izquerda de una cadena
function LTrim(value) {
    var pattern=new RegExp("^\\s+", "g")
    return value.replace(pattern, "");
}

// RTrim: Quita espacios en blanco a la derecha de una cadena
function RTrim(value) {
    var pattern=new RegExp("\\s+$", "g")
    return value.replace(pattern, "");
}

// Trim: Quita espacios en blanco a la derecha y a la izquierda de una cadena
function Trim(value) {
    return RTrim(LTrim(value));
}

// isSelected: devuelve verdadero si un select tiene elementos seleccionados (multiselect) o 
// si es la opcion seleccionada no es la primera (select normal)
function isSelected (obj) {
	if (obj.multiple) {// Es un Select Mutliple
		for (i=0;i<obj.options.length;i++) {
			if (obj.options[i].selected) return true;
		}	
		return false;
	} else if (obj.multiple==false) {	
		// Es un Select Simple
		return obj.selectedIndex!=0;
	} else {
		// Es un Option
		if(obj=='[object]') {
			if(obj.checked==true) {
				return true;
			}
		}
		var i;

        for (i=0;i<obj.length;i++) {
            if (obj[i].checked) return true;
        }       
		return false;
	}
}	

