/* 
	Manuel Gutierrez C.
	Archivo JavaScript
	Creación Noviembre 2009
*/ 

String.prototype.trim= function() {//Agrega la función trim al objeto String
   return this.replace(/(^\s*)|(\s*$)/g,""); //elimina espacios a izquierda y derecha
}

// Mensajes 
var MSG_INSERTAR 			= "¿Esta seguro de insertar el nuevo registro ";
var MSG_MODIFICAR			= "¿Esta seguro que desea modificar el registro ";
var MSG_ELIMINAR			= "¿Esta seguro que desea eliminar el registro ";
var MSG_RUT_INVALIDO		= "RUT Invalido";


//Variables
var CIERRA_PREGUNTA = 	" ? ";
var LETRAS			=	' ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ%.,';
var SOLOLETRAS		=	'ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz';
var CARACESPECIALES	=	' ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ~¡!@#=¿?$<>/*+·-_[]{},.:;\"º()&%';
var NUMEROS			=	"0123456789" ;
var SFECHA			=	"-" ;
var DVRUT			= 	"-kK";
var SIGNOS			=	"@\-";
var CARACTERES		=	"<>#$%&?¿" ;


// Funciones
//////////////////////////////////////////
	function paginaLoad(){
		/* obtenemos una referencia a la tabla */
	
		oTabla = document.getElementById('Tabla');
	
		/* agregamos una propiedad para llevar el índice de la fila seleccionada */
		oTabla.selectedIndex = 0;
	}
	
	/**
	 * Efecto de luminosidad para una fila de una tabla
	 */
	 
function seleccionaFila(oFila, numeroCabeceras){
	
		/* Actuar sólo si la fila no está ya seleccionada */
		if (oTabla.selectedIndex != oFila.rowIndex)
		{

			if (oTabla.selectedIndex == 0) oTabla.selectedIndex = oFila.rowIndex;
			// quitar la selección actual
			
			// Filas Pares e Inpares
			ID = oTabla.selectedIndex % 2;
			if(ID == 0){
				ID = 2
			}
			
			oTabla.rows[oTabla.selectedIndex].className = 'fila'+ID;
			// seleccionar la fila
			oFila.className = 'tableRollOverEffect1';
	
			// actualizar el índice de la fila seleccionada
			oTabla.selectedIndex =	oFila.rowIndex;
	}
}
/*
	Manuel Gutierrez C.
	Funcion que retorna un objeto del tipo AJAX.
*/
function nuevoAjax()
{ 
	var xmlhttp=false; 
	try 
	{
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false;}
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
	{ 
		xmlhttp=new XMLHttpRequest(); 
		xmlhttp.timeout = 10000;
	} 
	return xmlhttp; 
}

function cargaIdHidden(id,objForm){
	objForm.idHidden.value = id;
}
		
function validarFormulario(obj){
	var sw = true
	var mensaje = ''			
	for (j=obj.elements.length-1;j>=0;j--){					
		if (!obj.elements[j].disabled){			
			if (obj.elements[j].type != "button" && obj.elements[j].type != "hidden" && obj.elements[j].title !=""){								
			//if (obj.elements[j].type != "button" && obj.elements[j].type != "hidden" && obj.elements[j].getAttribute("isMandatory") == "1"){
					n_el = obj.elements[j].getAttribute("title"); 											
					if (obj.elements[j].type == 'select-one' && obj.elements[j].value == -1){
						//n_el = obj.elements[j].title;								
						mensaje = ' - ' + n_el + " \n" + mensaje;
						obj.elements[j].focus() ;				
						sw = false
					}							
					
					
					if (trim(obj.elements[j].value) ==''){			
						//alert(obj.elements[j].name)
						//n_el =obj.elements[j].title; 
						//n_el = obj.elements[j].getAttribute("titleMandatory"); 			
						
						mensaje =' - ' + n_el + " \n" + mensaje;
						obj.elements[j].focus() ;				
						sw = false
					}				
					if (obj.elements[j].type == "checkbox" && obj.elements[j].checked == false){
						//n_el =obj.elements[j].title; 
						//n_el = obj.elements[j].getAttribute("titleMandatory"); 			
						
						mensaje =' - ' + n_el + " \n" + mensaje;
						obj.elements[j].focus() ;				
						sw = false
					}
					if (obj.elements[j].type == "radio"){					
							//n_el =obj.elements[j].title;
							//n_el = obj.elements[j].getAttribute("titleMandatory"); 
							 						
							mensaje =' - ' + n_el + " \n" + mensaje;
							obj.elements[j].focus() ;				
							sw = false
					}		
			}
		}	
	}	
		if (sw)	return true;		
		else {
			//sw = confirm('Debe Ingresar los siguientes Campos Obligatorios : \n \n' + mensaje + "¿ Desea continuar ? ")				
			alert ('Debe Ingresar los siguientes Campos Obligatorios : \n \n' + mensaje)				
			return sw
		}	
}

	/***************************************************
	 Funcion valida un rut, tenga el formato que tenga
	***************************************************/
	function validaRut(objTxtRut)
	{
		objTxtRut.value 	= objTxtRut.value.toUpperCase()
		
		
		
		var rut 		= objTxtRut.value;
		
		if (rut == "") return false;
		
		var rutTMP 	= dejaSoloNumeros(rut);
		var largo 	= rutTMP.length;
		var dv 		= rutTMP.substring(largo-1,largo);
		rut 		= rutTMP.substring(0, largo-1);
		var i=0;
		var mult=2;
		var suma=0;
		if(objTxtRut.value.substring(0,1) == "0" || objTxtRut.value.substring(0,1) == "." || objTxtRut.value.substring(0,1) == "-" ){
		  alert(MSG_RUT_INVALIDO);  
		  objTxtRut.focus();  
		  objTxtRut.value = "";
		  objTxtRut.select(); 
		  return false;
		}
		
		largo = largo - 2;
		
		while(largo >= 0)
	    {
		    suma = suma + (rut.charAt(largo)*mult);
		    if(mult>6)
		      mult = 2;
	    	else
		      mult = mult + 1;
	    	largo = largo - 1;
	    }
	
		var resto = suma%11;
		var digito = 11-resto;
	
		if(digito==10)
	   		digito="K" ;
		else if(digito==11)
	      digito=0;
	
	if(dv == ""){
 
	  objTxtRut.value = "";
	  return false();
	}
	
	if(digito!=dv)
	{
	  alert(MSG_RUT_INVALIDO);  
	  objTxtRut.focus();  
	  objTxtRut.value = "";
	  objTxtRut.select(); 
	}  
	else
	{
		return objTxtRut.value = formatoRut(objTxtRut);  
	}  
	}

	/***************************************************
	 Funcion que saca , espacios y guiones a un String
	***************************************************/
	function dejaSoloNumeros(rut){
	  var tmpstr = "";
	  for ( i=0; i < rut.length ; i=i+1)
	    if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' && rut.charAt(i) != '$')
	      tmpstr = tmpstr + rut.charAt(i);
	  rut = tmpstr;
	  return rut;
	}
	/***************************************************
	 Funcion que da formato a un rut
	***************************************************/
	function formatoRut(objTxtRut)
	{
		var rut = objTxtRut.value;
		rut = dejaSoloNumeros(rut);
		largo = rut.length;		
		var rutTMP =  formatMiles(rut.substring(0, largo-1));		
		var formatoRut = rutTMP + "-" + rut.substring(largo-1, largo);			
		return formatoRut;
	}
	
	/***************************************************
	 Funcion que da formato a un rut
	***************************************************/
	function formatoRutPagina(TxtRut)
	{
		var rut = TxtRut;
		alert(rut);
		rut = dejaSoloNumeros(rut);		
		largo = rut.length;		
		var rutTMP =  formatMiles(rut.substring(0, largo-1));		
		var formatoRut = rutTMP + "-" + rut.substring(largo-1, largo);			
		return formatoRut;
	}
	/*************************************************************************************
	Función pone puntos a un valor
	**************************************************************************************/
	function formatMiles(rut){
	
	    texto = rut;
	    var tmpstr = "";
	    var largo = texto.length;
	    if(largo <= 12){		
	    for ( i = 0 ; i < largo ; i=i+1 ){
	        if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.') 
	            tmpstr = tmpstr + texto.charAt(i);
	    }
	    
	    texto = tmpstr;
	    largo = texto.length;
	    
	    if (largo == 0)
	        return texto;
	    
	    if (largo < 2) 
	        return  texto;
	    
	    var invertido = "";
	    for ( i = (largo - 1) ; i >= 0 ; i=i-1 )
	        invertido = invertido + texto.charAt(i);
	        
	    var dtexto = "";
	    
	    cnt = 0;
	    for ( i = 0 ; i < largo ; i=i+1 ){
	        if ( cnt == 3 ){
	            dtexto = dtexto + '.';
	            dtexto = dtexto + invertido.charAt(i);
	            cnt =1;
	        }
	        else{
	            dtexto = dtexto + invertido.charAt(i);
	            cnt=cnt + 1;
	        }
	    }
	    
	    invertido = "";
	    for (i = (dtexto.length - 1) ; i >= 0 ; i=i-1)
	       invertido = invertido + dtexto.charAt(i);    
	
	    return invertido ;
	    }
	    else{
	    alert('El valor excede el maximo');
		obj.focus();
	    return "";
	   }
	     
	
	}
	
function validarEmail(obj) {
	valor	= obj.value;
	if(valor != ""){
		
	 re=/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/
	  if(!re.exec(valor))    {
			alert("La dirección de email es incorrecta.");
			obj.value	=	"";
			return (false);
//	 	if (/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/.test(valor)) {
		} else {
			return (true);
		}
	}
}
function validarSiLetras(obj) { 
      var campo = obj.value;
      var caracter; 
      var caracteres = " ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ,.:;@\'\\~¡!#=¿?/*-_[](){}123456789" + String.fromCharCode(13); //en esta variable se guardaran todos los caracteres que pueden ser aceptados, la funcion String.fromCharCode(13) nos devuelve el caracter que en codigo se representa por un 13 en este caso el 13 representa un enter.
      var contador = 0;
      for (var i=0; i < campo.length; i++) { //creamos un ciclo para recorrer caracter por caracter la palabra contenida en la variable campo
            caracter = campo.substring(i, i + 1); //con la funcion substring obtenemos el caracter de la posicion i de la palabra a validar
            if (caracteres.indexOf(caracter) != -1) {//lo que hacemos aqui es buscar si el caracter contenido en la variable caracter se encuentra en la palabra caracteres ,esto a traves de la funcion indexOf la cual detecta si en una frase o cadena existe un valor o palabra identica. si es asi nos devuelve el indice que indica la pocicion donde lo encontro, si no lo encuentra nos manda un numero negativo.
                  contador++;
            } else {
                  alert("Ingrese valores alfanumericos");
                  obj.value="";
                  obj.focus();
                  return false;
            }
      }



      return true

}

function validarCaractEspeciales(obj) { 
      var campo = obj.value;
      //alert(campo);
      var caracter; 
      var caracteres = NUMEROS + CARACESPECIALES + String.fromCharCode(13); //en esta variable se guardaran todos los caracteres que pueden ser aceptados, la funcion String.fromCharCode(13) nos devuelve el caracter que en codigo se representa por un 13 en este caso el 13 representa un enter.
      var contador = 0;
      for (var i=0; i < campo.length; i++) { //creamos un ciclo para recorrer caracter por caracter la palabra contenida en la variable campo
            caracter = campo.substring(i, i + 1); //con la funcion substring obtenemos el caracter de la posicion i de la palabra a validar
            if (caracteres.indexOf(caracter) != -1) {//lo que hacemos aqui es buscar si el caracter contenido en la variable caracter se encuentra en la palabra caracteres ,esto a traves de la funcion indexOf la cual detecta si en una frase o cadena existe un valor o palabra identica. si es asi nos devuelve el indice que indica la pocicion donde lo encontro, si no lo encuentra nos manda un numero negativo.
                  contador++;
            } else {
                  alert("Texto con caracteres inválidos.");
                  obj.value="";
                  obj.focus();
                  return false;
            }
      }



      return true

}

function validaURL(obj){
	 
	var url_S = obj.value; 
	if(url_S != ""){
		if(url_S.substring(0, 7) != "http://" ){
		
			if(url_S.substring(0, 8) != "https://"){
				alert("La URL debe comenzar por http:// o https://");
				obj.value="http://";
				obj.focus();
			}
		}
	}
}
/*
function validarSiLetras(numero)
{

	if (!/^([ 0-9ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ~¡!#=¿/\*\-\%\.,_\\{\\}\[\]])*$/.test(numero.value))
	{
		numero.value= "";
		numero.focus();
		alert("Ingrese valores alfanumericos");
	}
}*/

function permitir(e, permiso) 
{ 
	var k;
	var allow; 
	
	if (permiso == "letras") 		{allow = LETRAS;			}
	if (permiso == "sololetras") 	{allow = SOLOLETRAS;		}
	if (permiso == "numeros") 		{allow = NUMEROS;			}
	if (permiso == "signos") 		{allow = SIGNOS;			}
	if (permiso == "caracteres") 	{allow = CARACTERES;		}
	if (permiso == "alfanumerico") 	{allow = LETRAS + NUMEROS;	}
	if (permiso == "especiales") 	{allow = NUMEROS + CARACESPECIALES;	}
	if (permiso == "fecha") 		{allow = NUMEROS + SFECHA;	}
	if (permiso == "rut") 			{allow = NUMEROS + DVRUT;	}			
		
		k=document.all?parseInt(e.keyCode): parseInt(e.which);
		
		
		
		if(k == 32 || k ==8)
			return e;
		 
		return (allow.indexOf(String.fromCharCode(k))!=-1); 
}
		
function digitafechakey(donde,caracter){
	var decimales = false
	dec = 0;		
		if (dec != 0)
			{decimales = true}
	 
	 
	 
	 
	pat = /[\*,\+,\(,\),\?,\\,\$,\[,\],\^]/
	valor = donde.value
	largo = valor.length
	crtr = true
	if(isNaN(caracter) || pat.test(caracter) == true)
		{
		if (pat.test(caracter)==true) 
			{caracter = "\\" + caracter}
		carcter = new RegExp(caracter,"g")
		valor = valor.replace(carcter,"")
		donde.value = valor
		crtr = false
		}
	else
		{
		var nums = new Array()
		cont = 0
		for(m=0;m<largo;m++)
			{
			if(valor.charAt(m) == "/" || valor.charAt(m) == " " || valor.charAt(m) == ",")
				{continue;}
			else{
				nums[cont] = valor.charAt(m)
				cont++
				}
			
			}
		}
	 
	if(decimales == true) {
		ctdd = eval(1 + dec);
		nmrs = 1
		}
	else {
		ctdd = 1; nmrs = 2
		}
	if(largo <= 8){	
	var cad1="",cad2="",cad3="",tres=0
	if(largo > nmrs && crtr == true)
		{
		for (k=nums.length-ctdd;k>=0;k--){
			cad1 = nums[k]
			cad2 = cad1 + cad2
			tres++
			if((tres%2) == 0){
				if(k!=0){
					cad2 = "/" + cad2
					}
				}
			}
			
		for (dd = dec; dd > 0; dd--)	
		{cad3 += nums[nums.length-dd] }
		if(decimales == true)
		{cad2 += "," + cad3}
		 donde.value = cad2
		}
	}	
	donde.focus()
}	

function validafecha(obj)
{ 
	var caja = obj.value;
   if (caja)
   {  
      borrar = caja;
      if ((caja.substr(2,1) == "/") && (caja.substr(5,1) == "/"))
      {      
         for (i=0; i<10; i++)
	     {	
            if (((caja.substr(i,1)<"0") || (caja.substr(i,1)>"9")) && (i != 2) && (i != 5))
			{
               borrar = '';
               break;  
			}  
         }
	     if (borrar)
	     { 
	        a = caja.substr(6,4);
		    m = caja.substr(3,2);
		    d = caja.substr(0,2);
		    if((a < 1900) || (a > 2100) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
		       borrar = '';
		    else
		    {
		       if((a%4 != 0) && (m == 2) && (d > 28))	   
		          borrar = ''; // Año no viciesto y es febrero y el dia es mayor a 28
			   else	
			   {
		          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
			         borrar = '';	      				  	 
			   }  // else
		    } // fin else
         } // if (error)
      } // if ((caja.substr(2,1) == "-") && (caja.substr(5,1) == "-"))			    			
	  else
	     borrar = '';
	  if (borrar == ''){
	     alert('La fecha ingresada no es valida');
	     obj.value="";
	     obj.focus();
	     return false;
	   }  
   } 
   return true;
}	
