/*
 *  Modulo         : Funciones Globales de Validación JavaScript
 *  Descripción    : Clase para el manejo de Templates (Plantillas)
 *  Requerimientos : Ninguno.
 *
 */

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

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

function esEntero(valor) {
    var pattern=new RegExp("^[0-9]*$");
    return valor.match(pattern);
}

// isMail: devuelve verdadero si value es una direccion de correo valida
// OJO: se puede arreglar para que acepte email con la forma freddy.castro@uta.cl (con puntos antes del @)
// Con esta expresión regular: ^([a-zA-Z0-9_\\-]+\\.)+@([a-zA-Z0-9_\\-]+\\.)+[a-zA-Z0-9_\\-]+$
function isMail(value) {
    var pattern=new RegExp("^[a-zA-Z0-9_\\-]+@([a-zA-Z0-9_\\-]+\\.)+[a-zA-Z0-9_\\-]+$");
    return value.match(pattern);

}

// isDate: devuelve verdadero si value es una fecha valida en formato dd/mm/aaaa
function isDate(value) {

    var pattern1=new RegExp("^(0[0-9]|[1-2][0-9]|30|31)/(0[13-9]|1[0-2])/[1-9][0-9][0-9][0-9]");
    var pattern2=new RegExp("^(0[0-9]|[1-2][0-9])/(0[0-9]|1[0-2])/[1-9][0-9][0-9][0-9]");

    if (value.match(pattern1) || value.match(pattern2)) {
        if (parseInt(value.substr(6,4))%4!=0 && parseInt(value.substr(3,2))==2 && parseInt(value.substr(0,2))==29) {
            return false;
        } else return true;
    } else return false;

}

// 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);
}

//
function SeleccionarTodos(chkbox)
{
	var mensaje = "";
	for (var i=0;i < document.forms[0].elements.length;i++)
	{
		var elemento = document.forms[0].elements[i];
		if (elemento.type == "checkbox" && !elemento.disabled)
		{
			elemento.checked = true; //chkbox.checked
		}
	}
	//mensaje += 'Para volver a la selección original \n';
	//mensaje += 'presione el botón DESHACER';
	//window.alert(mensaje);
}

function SeleccionarNada(chkbox)
{
	var mensaje = "";
	for (var i=0;i < document.forms[0].elements.length;i++)
	{
		var elemento = document.forms[0].elements[i];
		if (elemento.type == "checkbox" && !elemento.disabled)
		{
			elemento.checked = false; //chkbox.checked
		}
	}
	//mensaje += 'Para volver a la selección original \n';
	//mensaje += 'presione el botón DESHACER';
	//window.alert(mensaje);
}

function habilitaDeshabilita(chkbox,tf){
	// Esta función trabaja con forms[0], es decir, el primer objeto FORM que encuentre en el script, por lo que 
	// hay que tener cuidado con eso, a veces no funciona, sobre todo cuando hay más de un form en el script.
	if(tf == 3){
		for (var i=0;i < document.forms[0].elements.length;i++)
		{
			var elemento = document.forms[0].elements[i];
			if (elemento.type == "checkbox")
			{
				document.forms[0].elements[i].disabled = false;
			}
		}
	}else{
		for (var i=0;i < document.forms[0].elements.length;i++)
		{
			var elemento = document.forms[0].elements[i];
			if (elemento.type == "checkbox")
			{
				elemento.checked = false;
				document.forms[0].elements[i].disabled = true;
			}
		}
	}
}

function habilitaDeshabilita2(chkbox,tf){
	// El form debe llamarse form1
	if(tf == 3){
		for (var i=0;i < document.form1.elements.length;i++)
		{
			var elemento = document.form1.elements[i];
			if (elemento.type == "checkbox")
			{
				document.form1.elements[i].disabled = false;
			}
		}
	}else{
		
		for (var i=0;i < document.form1.elements.length;i++)
		{
			var elemento = document.form1.elements[i];
			if (elemento.type == "checkbox")
			{
				elemento.checked = false;
				document.form1.elements[i].disabled = true;
			}
		}
	}
}

function chequea_email(){
	// Si el texto del email no está vacío chequea que sea válido...
	if (!Empty(document.form1.intemail.value)){
	   if (!isMail(document.form1.intemail.value)) {
	    alert('Error en la sintaxis del Email');
	          document.form1.intemail.focus();    
	    return false;
	   }	
	}
	return true;
}
function chequea_nomperfil(){
	// Si el texto del email no está vacío chequea que sea válido...
	if (Empty(document.form1.intnom.value)){
	    alert('Debe ingresar el Nombre del Perfil!!!');
	          document.form1.intnom.focus();    
	    return false;	
	}
	return true;
}
function chequea_ap(){
	// Si el texto del email no está vacío chequea que sea válido...
	if (Empty(document.form2.intnom.value)){
	    alert('Debe ingresar el Nombre de la Aplicación!!!');
	          document.form2.intnom.focus();    
	    return false;	
	}
	return true;
}
function chequea_ap2(){
	// Si el texto del email no está vacío chequea que sea válido...
	if (Empty(document.form1.intnom.value)){
	    alert('Debe ingresar el Nombre de la Aplicación!!!');
	          document.form1.intnom.focus();    
	    return false;	
	}
	return true;
}
function chequea_rut(){
	// Si el texto del rut no está vacío chequea que sea numérico...
	if (!Empty(document.form1.intrut.value)){
	   if (!isInteger(document.form1.intrut.value)) {
	    alert('Sólo debe ingresar la parte numérica del RUT');
	          document.form1.intrut.focus();    
	    return false;
	   }	
	}
	return true;
}
function chequea_rut_vacio(){
	// Si el texto del rut no está vacío chequea que sea numérico...
	if (Empty(document.form1.intrut.value)){
	    alert('El campo RUT está vacío!!');
	          document.form1.intrut.focus();    
	    return false;	
	}
	return true;
}
function chequea(){
	mensaje = "";
	// Acá se chequea que las variables no sean vacías
	if (Empty(document.form1.intrut.value)) {
	   mensaje += 'Debe ingresar el RUT.\\n';
	}
	if (Empty(document.form1.intnom.value)) {
	   mensaje += 'Debe ingresar el NOMBRE.\\n';
	}
	if (Empty(document.form1.intemail.value)) {
	   mensaje += 'Debe ingresar el EMAIL.\\n';
	} 
	if (Empty(document.form1.intlogin.value)) {
	   mensaje += 'Debe ingresar el LOGIN.\\n';
	}
	if(mensaje == ""){
		return true;
		//confirm('¿Está seguro de grabar?');
	}
	window.alert(mensaje);
	document.form1.intrut.focus();
	return false;
}

function chequeaPorcentaje(){
	var nroElementos = document.forms[0].elements.length;
	var n,i,pos;
	var msg = '';
	for(i=0;i<nroElementos;i++){
		n = document.forms[0].elements[i].value;
		pos = n.indexOf('%');
		if(pos >= 0){
			alert('Debe ingresar los valores sin el %, sólo el número.\n\nPor ejemplo, para 70%, ingrese 70.');	
			return false;
		}		
	}
	return true;
}

function CambiaTexto(){
	var xpos = 0;
	var ypos = 0;
	var mensaje = "";
	var sperfil = this.form2.perfil.value;
	var largo = this.form2.perfil.value.length;
	var nomper;
	var tipoper;
	var lar,tipo,i;
	xpos = sperfil.indexOf('-');
	ypos = sperfil.indexOf('+');
	lar = ypos - xpos - 1;
	// substr(x,y) -> extrae la cadena desde la posicion x hasta que tenga una longitud y.
	nomper = sperfil.substr(xpos+1,lar);
	tipoper = sperfil.substr(ypos+1);
	tipo = parseInt(tipoper);
	this.form2.intnom.value = nomper;
	i = 0;
	while(i<4){
		if(document.form2.tipo_perfil.options[i].value == tipoper){
			document.form2.tipo_perfil.selectedIndex = i;
		};
		i++;
	};
	
}
function CambiaAplicacion(){
	var nompos = 0;
	var urlpos = 0;
	var outpos = 0;
	var parpos = 0;
	var mensaje = "";
	var sap = this.form2.aplicacion.value;
	var largo = this.form2.aplicacion.value.length;
	var nomsis;
	var urlsis;
	var outsis;
	var codipar;
	var icodipar;
	var lar,tipo,i;
	var lar2;
	var lar3;
	nompos = sap.indexOf('-');
	urlpos = sap.indexOf('+');
	outpos = sap.indexOf(';');
	parpos = sap.indexOf(',');
	lar = urlpos - nompos - 1;
	// substr(x,y) -> extrae la cadena desde la posicion x hasta que tenga una longitud y.
	nomsis = sap.substr(nompos+1,lar);
	lar2 = outpos - urlpos - 1;
	urlsis = sap.substr(urlpos+1,lar2);
	lar3 = parpos - outpos - 1;
	outsis = sap.substr(outpos+1,lar3);
	codipar = sap.substr(parpos+1);
	icodipar = parseInt(codipar);
	this.form2.intnom.value = nomsis;
	this.form2.intscr.value = urlsis;
	this.form2.intout.value = outsis;
	nroelem = document.form2.parametros.options.length;
	i = 0;
	while(i<nroelem){
		if(document.form2.parametros.options[i].value == icodipar){
			document.form2.parametros.selectedIndex = i;
		};
		i++;
	};
}

function CambiaParametro(){
	var urlpos = 0;
	var servpos = 0;
	var pathpos = 0;
	var contpos = 0;
	var descpos = 0;
	var mensaje = "";
	var sap = this.form2.parametro.value;
	var largo = this.form2.parametro.value.length;
	var urlbin;
	var urlserv;
	var pathhome;
	var contador;
	var descrip;
	var icont;
	var lar,tipo,i;
	var lar2;
	var lar3;
	var lar4;
	urlpos = sap.indexOf('-');
	servpos = sap.indexOf('+');
	pathpos = sap.indexOf(';');
	contpos = sap.indexOf(',');
	descpos = sap.indexOf('*');
	lar = servpos - urlpos - 1;
	urlbin = sap.substr(urlpos+1,lar);
	lar2 = pathpos - servpos - 1;
	urlserv = sap.substr(servpos+1,lar2);
	lar3 = contpos - pathpos - 1;
	pathhome = sap.substr(pathpos+1,lar3);
	lar4 = descpos - contpos - 1;
	contador = sap.substr(contpos+1,lar4);
	icont = parseInt(contador);
	descrip = sap.substr(descpos+1);
//	mensaje += sap;
//	mensaje += '=';
//	mensaje += urlbin;
//	mensaje += '-';
//	mensaje += urlserv;
//	mensaje += '-';
//	mensaje += pathhome;
//	mensaje += '-';
//	mensaje += contador;
//	mensaje += '-';
//	mensaje += icont;
//	mensaje += '-';
//	mensaje += descrip;
//	alert(mensaje);
	if (contador == "no"){
		this.form2.intcont.value = '';
	}else{
		this.form2.intcont.value = icont;
	}
	this.form2.inturl.value = urlbin;
	this.form2.intserv.value = urlserv;
	this.form2.intpath.value = pathhome;
	this.form2.intdesc.value = descrip;
}