//Para controlar comillas en los campos de entrada
document.onkeydown = mykeyhandler;

/***********************************************
* Nombre: mykeyhandler
* Descripcion: Funcion que nos impide:
*			   - pulsar comillas sobre campos texto y textarea 
*			   - retroceder con tecla delete en campos solo lectura 	
************************************************/
function mykeyhandler() {	

	 var teclaAlt   = event.altKey;
	 var teclaCtrl  = event.ctrlKey;
	 var teclaShift = event.shiftKey;        
                  
	 //Si estamos en un objeto tipo texto         
	if (event.srcElement.type == "text" || event.srcElement.type == "textarea"){    
	
		if (window.event && (teclaShift==false) && window.event.keyCode == 219)
		{
			alert('No puede escribir comillas')				
			return false;		
		}
		
		if (window.event && teclaShift && window.event.keyCode == 50)
		{
			alert('No puede escribir comillas')				
			return false;		
		} 
		
		//Impide retroceder con tecla delete en campos solo lectura
		if (event.srcElement.readOnly && window.event && window.event.keyCode == 8)
		{        	
				window.event.returnValue = false;
				window.event.keyCode = 0;
				return false;
		}		
	}      


}


/***********************************************
* Nombre: volverMenu
* Descripcion: Link a la pagina menu desde cualquier pagina de la aplicacion	
************************************************/
function volverMenu()
{
	window.location = '../menu.asp'
}


//*************** FUNCIONES PARA CAMPOS FECHA *************************
//Variables
var campos_llenos;
	campos_llenos="";
var color_fechad;
var color_fechah;
var resultado_fecha="true";
	
/***********************************************
* Nombre: CAMPO_FECHA
* Descripcion: Permite escribir en el campo fecha unicamente valores númericos
*				con un máximo de 10 caracteres.
* Parametros: --> nombre: Nombre del campo fecha	
************************************************/
function CAMPO_FECHA(nombre){

	//Permite unicamente escribir numeros y maxima longitud 10 caracteres
	if ((event.keyCode<"48")||(event.keyCode>"57")){
	return false;
	}
	else{
	texto =nombre.value
	
		if(texto.length==10){
			
			return false;
		}
	return true;
	}
}

/* Nombre: PONER_BARRAS
   Descripcion: Esta función se encarga de poner barras / automaticamente en los campos fecha 
   Parametros: nombreCampo -- Se pasa mediante this el nombre el campo fecha
*/
function PONER_BARRAS(nombreCampo){
	texto_anterior=nombreCampo.value;
	texto ="";

// Comprobamos barras cuando no pulsamos las teclas borrar o suprimir
if(event.keyCode!="8" &&
   event.keyCode!="46"){
	
	if (texto_anterior.length>1){
		if ((texto_anterior.charAt(2)!="/")&&
		    (texto_anterior.charAt(1)!="/")){
			
			//Poner la barra en el caracter tercero
			dia=texto_anterior.substring(0,2);
			resto=texto_anterior.substring(2,texto_anterior.length);
			texto=dia+"/"+resto;
			nombreCampo.value=texto;
		}
	}

	if(texto_anterior.length>4){
		if((texto_anterior.charAt(5)!="/")&&
		   (texto_anterior.charAt(4)!="/")&&
		   (texto_anterior.charAt(3)!="/"))
		   {
		   
   			//Poner la barra en el caracter sexto
			
			diames=texto_anterior.substring(0,5);
			resto=texto_anterior.substring(5,texto_anterior.length);
			texto=diames+"/"+resto;
			nombreCampo.value=texto;
		   
		   }
		   
		   if(texto_anterior.charAt(2)!="/" &&
		      texto_anterior.charAt(1)!="/" &&
			  texto_anterior.charAt(0)!="/"){
			  dia=texto.substring(0,2)+"/";
			  resto=texto.substring(3,texto.length);
			  texto=dia+resto;
			  nombreCampo.value=texto;
			  }
	}
	
}

}


var resultado_fecha="true";

/* Nombre: VALIDAR_FECHA
   Parametros: nombreCampo -- Se pasa mediante this el nombre el campo fecha
   Descripción: Esta función se encarga de validar si la fecha introducida existe
   Si las fechas son incorrectas al abandonar el campo aparecen alert.	
*/
function VALIDAR_FECHA(nombreCampo){


//Inicializacion de variables

	texto=nombreCampo.value;
	
	dato_anio=texto.substring(6,10);
	numanio=dato_anio/1;
	
	dato_mes=texto.substring(3,5);
	nummes=dato_mes/1;
	
	dato_dia=texto.substring(0,2);
	numdia=dato_dia/1;
	
	//Control del numero de dias por mes y del numero de meses
	
	if(texto.length==10){
		if(dato_mes=="01" ||
		   dato_mes=="03" ||
		   dato_mes=="05" ||
		   dato_mes=="07" ||
		   dato_mes=="08" ||
		   dato_mes=="10" ||
		   dato_mes=="12"){
		   
			   if(numdia>31){
			   		alert('El mes introducido no puede tener m'+String.fromCharCode('225')+'s de 31 d'+String.fromCharCode('237')+'as');
					FECHA_INCORRECTA(nombreCampo);
			   }
			   else{
			   		FECHA_CORRECTA(nombreCampo);
			   }
		}//Fin meses de 31 dias
		
		else{
			if(dato_mes=="02"){
				var dato_ano=texto.substring(8,texto.length);
				var num_ano=dato_ano/1;
				
				if(num_ano%4==0){
					if(numdia>29){
						alert('El a'+String.fromCharCode('241')+'o introducido no es bisiesto');
						FECHA_INCORRECTA(nombreCampo);
					}
					else{
						FECHA_CORRECTA(nombreCampo);
					}
				}
				else{
					if(numdia>28){
						alert('El a'+String.fromCharCode('241')+'o introducido no es bisiesto');
						FECHA_INCORRECTA(nombreCampo);
					}
					else{
						FECHA_CORRECTA(nombreCampo);
					}
						
				}//Fin else anno no bisiesto
			}//Fin mes
			
			else{
				if(dato_mes=="04" ||
				   dato_mes=="06" ||
				   dato_mes=="09" ||
				   dato_mes=="11"){
				   
				   if(numdia>30){
				   		alert('El mes introducido no puede tener m'+String.fromCharCode('225')+'s de 30 d'+String.fromCharCode('237')+'as');
						FECHA_INCORRECTA(nombreCampo);
				   }
				   else{
				   		FECHA_CORRECTA(nombreCampo);		
				   }
				}
				
				else{
					if(nummes>12){
						alert('El a'+String.fromCharCode('241')+'o no puede tener m'+String.fromCharCode('225')+'s de 12 meses');
						FECHA_INCORRECTA(nombreCampo);
					}
					else{
						FECHA_CORRECTA(nombreCampo);		
					}
				}
			}
		}
	}//Fin if si texto 10
	else{
		if((texto.length<10)&&(texto.length>0)){
				alert('Formato de fecha no v'+String.fromCharCode('225')+'lido, debe ser: dd/mm/aaaa');
				FECHA_INCORRECTA(nombreCampo);
		}
	}
	
}//Fin funcion


/***********************************************
* Nombre: FECHA_CORRECTA
* Descripcion: Si la fecha es correcta se puede salir del campo	
* Parametros: nombreCampo --> Nombre del campo fecha
************************************************/
function FECHA_CORRECTA(nombreCampo){
	resultado_fecha="true";
	return resultado_fecha;
}

/***********************************************
* Nombre: FECHA_INCORRECTA
* Descripcion: Si la fecha no es correcta no se puede salir del campo	
* Parametros: nombreCampo --> Nombre del campo fecha
************************************************/
function FECHA_INCORRECTA(nombreCampo){
	nombreCampo.focus();
	resultado_fecha="false";
	return resultado_fecha;
}
//***********************************************************************
//	FIN FUNCIONES FECHA
//**********************************************************************


//***********************************************************************
//	Nombre: control_numerico 
//  Descripcion: Sólo permite pulsar texto númerico
//**********************************************************************
function control_numerico(){
	
	if ((event.keyCode<"48")||(event.keyCode>"57")) 
		{

			return false;
		}
		else 
		{
			return true;
		}
}


//***********************************************************************
//	Nombre: somenteMaisculas 
//  Descripcion: Trasformar texto en mayusculas
//**********************************************************************
function somenteMaiusculas()
{
	if ((window.event.keyCode < 65 || window.event.keyCode > 90) &&
		(window.event.keyCode < 97 || window.event.keyCode > 122) &&
		(window.event.keyCode < 48 || window.event.keyCode > 57) &&
		window.event.keyCode != 32)
		
		return false;

	if (window.event.keyCode > 96 && window.event.keyCode < 123)
		window.event.keyCode -= 32;

	return true;
}


//*****************************************
//**** FUNCIONES CAMPO IMPORTE ************
// Campo numérico cuyos decimales son puntos
//*****************************************


//***********************************************************************
//	Nombre: FORMATO_IMPORTE 
//  Descripcion: Permite escribir numero de 9 enteros y 2 decimales
//  Parametros: --> campo: Nombre del campo importe
//**********************************************************************
function FORMATO_IMPORTE(campo) {

	var fact=1;
	ndec=2;
	num = campo.value;
	longitud=num.length;

	if (num!="") {
		if (longitud>11)
			num=num.substring(0,longitud-2);

		//ponemos tantos decimales como el valor de ndec
		for (i=1; i<=ndec;i++)
		{
			fact = fact * 10;
		}
		
		importe=Math.round(num*fact)/fact;	
		if (isNaN(importe))
		{
			importe = 0;
		}
		
		campo.value=importe;
		
	}
}
function FORMATO_IMPORTE2(campo) {

	var fact=1;
	ndec=4;
	num = campo.value;
	longitud=num.length;

	if (num!="") {
		if (longitud>11)
			num=num.substring(0,longitud-2);

		//ponemos tantos decimales como el valor de ndec
		for (i=1; i<=ndec;i++)
		{
			fact = fact * 10;
		}
		
		importe=Math.round(num*fact)/fact;	
		if (isNaN(importe))
		{
			importe = 0;
		}
		
		campo.value=importe;
		
	}
}
//***********************************************************************
//	Nombre: DECIMAL 
//  Descripcion: Permite escribir un punto unicamente como separador decimal
//  Parametros: --> campo: Nombre del campo importe
//**********************************************************************

function DECIMAL(campo){

	var cadena = campo.value ;
	if ((event.keyCode<"48" || event.keyCode>"57") && (event.keyCode!="46")) 
	{	
		return false;
	}
	else 
	{
		if (event.keyCode == "46")
		{
			var cadena = campo.value ;
			var una_coma = cadena.indexOf(".");	
				if (una_coma>=0)
				{
					return false;
				}
				else
				{
					return true;
				}
				
		}
		else
		{
			
			if (cadena.length >= 8)
			{
				var una_coma = cadena.indexOf(".");
				if (una_coma>=0)
				{
					if (cadena.length < 11)
					{
						return true;
					}
					else
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			}	
					
		}
	}	
		
}

// Fin



//***********************************************************************
//	Nombre: rtrim 
//  Descripcion: Función que quita los espacios en blanco a la derecha de una cadena
//  Parametros: --> cadena: Cadena que se transforma
//**********************************************************************
function rtrim (cadena)
{
     var uu = cadena.charAt (cadena.length -1)
     var posicion= cadena.length -1     
     while (uu==" " && posicion>=0)
        {
           posicion--
           uu = cadena.charAt (posicion)
        }
     var salida =cadena.substr (0 ,posicion + 1) 
     return cadena.substr ( 0 , posicion + 1 )
}

// Nombre: MaxlongitudCampo
// Descripcion: Función que no permite escribir en un campo un numero máximo de caracteres
// Parametros:
// 			valor(this.value) valor que contiene el campo
// 			long - numero que nos indica el valor máximo de caracteres permitido
function MaxlongitudCampo(valor, long)
{
	if (valor.length >= long)
		return false;
	else
		return true;
}		

