//***********************************************
// ROLLOVER TABLAS
//***********************************************
var ns6=document.getElementById&&!document.all
var ie=document.all

function changeto(e,highlightcolor)
{
	source=ie? event.srcElement : e.target
	if (source.tagName=="TR"||source.tagName=="TABLE")
	return
	while(source.tagName!="TD"&&source.tagName!="HTML")
	source=ns6? source.parentNode : source.parentElement
	if (source.style.backgroundColor!=highlightcolor&&source.id!="ignore")
	source.style.backgroundColor=highlightcolor
}

function contains_ns6(master, slave) 
{ //check if slave is contained by master
	while (slave.parentNode)
	if ((slave = slave.parentNode) == master) return true;
	return false;
}

function changeback(e,originalcolor)
{
	if (ie&&(event.fromElement.contains(event.toElement)||source.contains(event.toElement)||source.id=="ignore")||source.tagName=="TR"||source.tagName=="TABLE")
	return
	else if (ns6&&(contains_ns6(source, e.relatedTarget)||source.id=="ignore"))
	return
	if (ie&&event.toElement!=source||ns6&&e.relatedTarget!=source) source.style.backgroundColor=originalcolor
}

//***********************************************
// VENTANAS
//***********************************************

// ####################################
function abreVentanaPosicionada(url, ancho, alto, posX, posY, scroll, resize)
{
	opciones = "width="+ancho+",height="+alto+",top="+posY+",left="+posX+",scrollbars="+scroll+",resizable="+resize;
	nueva = window.open (url,'emergente',opciones);
}

// ####################################
function abreVentana(url, nombre,ancho, alto)
{
 anchoPantalla = screen.availWidth;
 altoPantalla = screen.availHeight;
 
 posX = Math.round((anchoPantalla - ancho)/2)-5;
 posY = Math.round((altoPantalla - alto)/2)-20;
 
 opciones = "width="+ancho+",height="+alto+",top="+posY+",left="+posX+",scrollbars=0,resizable=0";
 
 nueva = window.open (url,nombre,opciones);
}

// ####################################
function abreVentana2(url, nombre,ancho, alto, scrollbars, resizable)
{
 anchoPantalla = screen.availWidth;
 altoPantalla = screen.availHeight;
 
 posX = Math.round((anchoPantalla - ancho)/2);
 posY = Math.round((altoPantalla - alto)/2);
 
 opciones = "width="+ancho+",height="+alto+",top="+posY+",left="+posX+",scrollbars="+scrollbars+",resizable="+resizable;
 
 nueva = window.open (url,nombre,opciones);
}

//para abrir la ventanita 
function cambiarclave()
{
  abreVentana('emergente.asp?men=6', 'info',360, 260)
}

// Calcula si necesita barra de scroll en función de la resolución de pantalla
function abreVentanaImagen(url, nombre, ancho, alto, resize)
{
	// url					- de la imagen
	// nombre			- de la ventana
	// ancho, alto		- de la imagen, no de la ventana
	// resize				- si quieres permitir que se redimensione la ventana
	
	// Cogemos el ancho y alto de la pantalla
	// Con un pequeño ajuste
	anchoPantalla = screen.availWidth - 10;
	altoPantalla = screen.availHeight - 40;	

	// Calculamos el tamaño de la ventana sumando el de la imagen
	// al propio tamaño de la ventana (por su borde, barra de título)
	margenAncho=20
	margenAlto=24
	anchoVentana = parseInt(ancho) + margenAncho
	altoVentana = parseInt(alto) + margenAlto

	// Si el tamaño propuesto para la ventana es mayor que el de la pantalla,
	// la redimensionamos proporcionalmente
	if (altoVentana > altoPantalla)
	{
		proporcion = altoPantalla/altoVentana
		anchoVentana = Math.round(anchoVentana * proporcion)
		altoVentana = altoPantalla
	}

	if (anchoVentana > anchoPantalla)
	{
		proporcion = anchoPantalla/anchoVentana
		altoVentana = Math.round(altoVentana * proporcion)
		anchoVentana = anchoPantalla
	}

	// Sacaremos barra de scroll si el tamaño de la imagen es mayor
	// que el de la ventana (menos su margen)
	barrascroll=0; 
	if ((alto>altoVentana-margenAlto) || (ancho>anchoVentana-margenAncho))
	{
		barrascroll=1		
	}

	// Calculamos la posición de la ventana para que salga centrada
	posX = Math.round((anchoPantalla - anchoVentana)/2);
	posY = Math.round((altoPantalla - altoVentana)/2);

	opciones = "width="+anchoVentana+",height="+altoVentana+",top="+posY+",left="+posX+",scrollbars="+barrascroll+",resizable="+resize;
	nueva = window.open (url,nombre,opciones);
}


//************************************************
// CALENDARIO
//************************************************

function y2k(number)
{
	return (number < 1000) ? number + 1900 : number;
}

var today = new Date();
var day   = today.getDate();
var month = today.getMonth();
var year  = y2k(today.getYear());

function padout(number) { return (number < 10) ? '0' + number : number; }


function reinicia(campo)
{
    campo.value = '' + padout(day) + '/' + padout(month - 0 + 1) + '/' + year;
    ventanaCalendario.close();
}

function abreCalendario(urlCalendario, nombreCampo)
{    
    nombreCampoDestino = nombreCampo
	
	ancho = 350;
	alto = 270;
	
	anchoPantalla = screen.availWidth;
	altoPantalla = screen.availHeight;
 
	posX = Math.round((anchoPantalla - ancho)/2);
	posY = Math.round((altoPantalla - alto)/2);
 
	opciones = "width="+ancho+",height="+alto+",top="+posY+",left="+posX+",scrollbars=0,resizable=0";	
    
	ventanaCalendario = window.open (urlCalendario,'calendario',opciones);	
    
    if (ventanaCalendario.opener == null) ventanaCalendario.opener = self;
	
	// Marco el check de Fecha

	document.forms[0].checkFecha.checked=true
}

//************************************************
// IMPRESIÓN
//************************************************

function imprimirApaisado()
{
	alert("Para una correcta impresión de las páginas, se recomienda elegir la opción de impresión horizontal (apaisada) en la ventana que aparecerá a continuación");
	window.print();
}

//************************************************
// FECHAS
//************************************************

// *******************************************************************
function EsBisiesto(anio) 
// El año se debe pasar con cuatro digitos
{
	if (anio % 100 == 0) 
	{
		if (anio % 400 == 0) 
		{ 
			return true; 
		}
	}
	else 
	{
		if ((anio % 4) == 0) 
		{
			return true; 
		}
	}
	return false;
}

// *******************************************************************

function ValidarFecha(fecha)
{
	// Comprobamos que la longitud de la fecha es exactamente 10, por "DD/MM/AAAA"
	if (fecha.length == 10)
	{
		// Dividimos la fecha en tres elementos, los separados por "/"
		var arrayFecha = fecha.split ("/");
		
		// Comprobamos que sean tres y que cada uno sea distinto de ""
		if (arrayFecha.length == 3)
		{
			var dd = arrayFecha[0];
			var mm = arrayFecha[1];
			var aaaa = arrayFecha[2];
			
			// Comprobamos que sean números
			if (isNaN(dd) || isNaN(mm) || isNaN (aaaa))
			{
				//alert ("La fecha introducida contiene caracteres no numéricos");
				return false
			}
			else
			{
				// Son numeros, continuamos
				var intDd = parseInt(dd,10);
				var intMm = parseInt(mm,10);
				var intAaaa = parseInt(aaaa,10);
				
				if (intMm == 1 || intMm == 3 || intMm == 5 || intMm == 7 || intMm == 8 || intMm == 10 || intMm == 12)
				{
					// 31 dias
					if (intDd < 1 || intDd > 31)
					{
						//alert ("Dia incorrecto, para este mes debe estar entre 1 y 31");
						return false
					}
					else
					{
						return true;
					}
									
				}
				else if (intMm == 4 || intMm == 6 || intMm == 9 || intMm == 11)
				{
					// 30 dias
					if (intDd < 1 || intDd > 30)
					{
						//alert ("Dia incorrecto, para este mes debe estar entre 1 y 30");
						return false
					}
					else
					{
						return true;
					}
				}
				else if (intMm == 2)
				{
					// febrero
					if (EsBisiesto(intAaaa))
					{
						// 29 dias
						if (intDd < 1 || intDd > 29)
						{
							//alert ("Dia incorrecto, para este mes y año debe estar entre 01 y 29");
							return false
						}
						else
						{
							return true;
						}
					}
					else
					{
						// 28 dias
						if (intDd < 1 || intDd > 28)
						{
							//alert ("Dia incorrecto, para este mes y año debe estar entre 01 y 28");
							return false
						}
						else
						{
							return true;
						}						
					}
				}
				else
				{
					//alert ("El mes "+mm+" no es válido");
					return false;
				}
			}

		}
		else
		{
			// No hay tres elementos, dd, mm, aaaa
			//alert ("Formato de fecha incorrecto, debe ser DD/MM/AAAA");
			return false;
		}
	}
	else
	{
		// La fecha no tiene 10 digitos
		//alert ("Formato de fecha incorrecto, debe ser DD/MM/AAAA");
		return false;
	}
}


//***********************************************
// IMAGENES - Precarga y rollover para la Intranet
//***********************************************

var imagenesCargadas = false;

// Cargamos las imagenes para el mouseOut de manera normal
if (document.images)
{
	// Establecer aqui todas las imagenes: img1off, img2off, etc...
	img_imprimir_off = new Image(); img_imprimir_off.src = "../imagenes/imprimir.gif";
	img_desconectar_off = new Image(); img_desconectar_off.src = "../imagenes/desconectar.gif";
	img_calendario1_off = new Image(); img_calendario1_off.src = "../imagenes/calendario.gif";
	img_calendario2_off = new Image(); img_calendario2_off.src = "../imagenes/calendario.gif";	
}

// Esta funcion hace la precarga para el mouseOver, pero la llamaremos en el onLoad de la página
// para no retrasar la carga de la pagina con imagenes que todavia no se ven. Además marcará el 
// flag "imagenesCargadas" para que la funcion de rollover sepa que ya puede hacer el efecto porque
// se han cargado las imagenes, que si no quedaria feo.

function preCargaImagenes()
{  // llamado desde onLoad
   	if (document.images) 
	{
 		// Establecer aqui todas las imagenes: img1on, img2on, etc...
       	img_imprimir_on = new Image(); img_imprimir_on.src = "../imagenes/imprimir_over.gif";
       	img_desconectar_on = new Image(); img_desconectar_on.src = "../imagenes/desconectar_over.gif";		
		img_calendario1_on = new Image(); img_calendario1_on.src = "../imagenes/calendario_over.gif";		
		img_calendario2_on = new Image(); img_calendario2_on.src = "../imagenes/calendario_over.gif";				

       	return (imagenesCargadas = true); 
   	}
}

function rollIn(imgName) 
{
    if (document.images && (imagenesCargadas == true)) 
    {
       	document[imgName].src = eval(imgName + "_on.src");
    }
}

function rollOut(imgName) 
{
	if (document.images)
	{
       	document[imgName].src = eval(imgName + "_off.src");
    }
}

// ********************************************************
// ENVIO DE EMAIL
// ********************************************************
function enviarCorreo(usuario,dominio,extension,asunto)
{
	window.location="mailto:"+usuario+"@"+dominio+"."+extension+"?subject="+asunto
}

// ********************************************************
// VALIDACIONES DE CAMPOS - EMAIL, ENTEROS...
// ********************************************************
function validarEmail(email, max)
{
	if ((email == "") || (email.indexOf('@') == -1) || (email.indexOf('.') == -1) || (email.length < 6) || (email.length > max))
	{
		return false;
	}
	else
	{
		return true;
	}
}

// *********************************************************
function validarEntero(cadena, minimo, maximo)
{
	// Comprueba que la cadena sea un número entero entre mínimo y máximo
	
	if ((cadena.length==0))
	{
		// Longitud incorrecta
		return false
	}
	else
	{
		// Longitud correcta
		valor = parseInt(cadena);
		if (isNaN(valor))
		{
			// Longitud correcta pero no es un número
			return false
		}
		else
		{
			// Longitud correcta, es un número
			if (valor != cadena)
			{
				// Al convertir a entero no coincide
				return false
			}
			else
			{
				// Coincide !
				if ((valor>=minimo) && (valor<=maximo))
				{
					// Está dentro de los límites, OK
					return true;
				}
				else
				{
					// Está fuera de los límites
					return false;
				}
			}
		}
	}
}

// ***********************************************************
// PROCESAR TEXTOS
// ***********************************************************

function dejaPasarCaracteres(cadena,caracteresValidos)
{
	// Devuelve una copia de cadena donde se han eliminado todos los caracteres no especificados
	// como válidos.
	// Ej. cadena=dejaPasarCaracteres(otraCadena,"1234567890")
	cadena2="";

	// Recorremos la cadena
	for (i=0; i<cadena.length; i++)
	{
		if (caracteresValidos.indexOf(cadena.substr(i,1)) != -1)
		{
			cadena2=cadena2+cadena.substr(i,1);
		}
	}

	return (cadena2);
}