/**********************************************************
Sleight
(c) 2001, Aaron Boodman
http://www.youngpup.net
**********************************************************/
/* Hace transparentes las imágenes .PNG en Internet Explorer */


if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent)
{
	document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
	window.attachEvent("onload", fnLoadPngs);
}

function fnLoadPngs()
{
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

	for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--)
	{
		if (itsAllGood && img.src.match(/\.png$/i) != null)
		{
			var src = img.src;
			var div = document.createElement("DIV");
			div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"
			div.style.width = img.width + "px";
			div.style.height = img.height + "px";
			img.replaceNode(div);
		}
		img.style.visibility = "visible";
	}
}


////////////////////////////////////////////////////////////////////
// Función que borra un campo de formulario
// Parámeros de entrada :
//			formulario - nombre del formulario que contiene el campo
//			campo - nombre del campo de formulario a borrar
////////////////////////////////////////////////////////////////////

function BorrarCampoFormulario(formulario,campo) {
	document.forms[formulario].elements[campo].value="";
}

////////////////////////////////////////////////////////////////////
// Función que escribe la fecha actual en el documento
////////////////////////////////////////////////////////////////////

function FechaActual() {

	var meses = new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
	var dias = new Array('Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado');
	var ahora = new Date();
	var anio = ahora.getYear();

	if (anio < 2000) anio = anio + 1900;

	document.write(dias[ahora.getDay()] + " " + ahora.getDate() + " de " + meses[ahora.getMonth()] + " " +" de " + anio);
}

///////////////////////////////////////////////////////////////////////
// Función que salta a una página concreta en el sistema de paginación
// Parámeros de entrada :
//			url - url a la que dirigir tras el cambio de página
//			pagina_actual - número de página actual
//			total_paginas - número total de páginas disponibles
///////////////////////////////////////////////////////////////////////

function saltar_a_pagina(url, pagina_actual, total_paginas) {

	mensaje = "Introduzca un número de página entre 1 y " + total_paginas;
	
	if (pagina_actual < total_paginas) {
		mostrar_pagina_destino = pagina_actual + 1;
	}else{
		mostrar_pagina_destino = pagina_actual - 1;
	}
	pagina = prompt( acentos(mensaje), mostrar_pagina_destino);	
	
	if ( pagina > 0  ) {
		if ( pagina < 1 ) { pagina = 1;  }
		if ( pagina > total_paginas ) { pagina = total_paginas; }
	
		window.location = url + pagina;
	}
}


////////////////////////////////////////////////////////////////////
// Función que convierte los acentos de un texto UTF-8 o entidad 
// HTML a su código correspondiente para evitar errores en algunos 
// navegadores o S.O.
// Parámeros de entrada :
//			cadena - contiene de texto a convertir
////////////////////////////////////////////////////////////////////

function acentos(cadena) {
	// version 040623
	// Spanish - Español
	// Portuguese - Portugués
	// Italian - Italiano
	// French - Francés
	// Also accepts and converts single and double quotation marks, square and angle brackets
	// and miscelaneous symbols.
	// Also accepts and converts html entities for all the above.
//	if (navigator.appVersion.toLowerCase().indexOf("windows") != -1) {return cadena}
	cadena = cadena.replace(/¡/g,"\xA1");	cadena = cadena.replace(/&iexcl;/g,"\xA1")
	cadena = cadena.replace(/¿/g,"\xBF");	cadena = cadena.replace(/&iquest;/g,"\xBF")
	cadena = cadena.replace(/À/g,"\xC0");	cadena = cadena.replace(/&Agrave;/g,"\xC0")
	cadena = cadena.replace(/à/g,"\xE0");	cadena = cadena.replace(/&agrave;/g,"\xE0")
	cadena = cadena.replace(/Á/g,"\xC1");	cadena = cadena.replace(/&Aacute;/g,"\xC1")
	cadena = cadena.replace(/á/g,"\xE1");	cadena = cadena.replace(/&aacute;/g,"\xE1")
	cadena = cadena.replace(/Â/g,"\xC2");	cadena = cadena.replace(/&Acirc;/g,"\xC2")
	cadena = cadena.replace(/â/g,"\xE2");	cadena = cadena.replace(/&acirc;/g,"\xE2")
	cadena = cadena.replace(/Ã/g,"\xC3");	cadena = cadena.replace(/&Atilde;/g,"\xC3")
	cadena = cadena.replace(/ã/g,"\xE3");	cadena = cadena.replace(/&atilde;/g,"\xE3")
	cadena = cadena.replace(/Ä/g,"\xC4");	cadena = cadena.replace(/&Auml;/g,"\xC4")
	cadena = cadena.replace(/ä/g,"\xE4");	cadena = cadena.replace(/&auml;/g,"\xE4")
	cadena = cadena.replace(/Å/g,"\xC5");	cadena = cadena.replace(/&Aring;/g,"\xC5")
	cadena = cadena.replace(/å/g,"\xE5");	cadena = cadena.replace(/&aring;/g,"\xE5")
	cadena = cadena.replace(/Æ/g,"\xC6");	cadena = cadena.replace(/&AElig;/g,"\xC6")
	cadena = cadena.replace(/æ/g,"\xE6");	cadena = cadena.replace(/&aelig;/g,"\xE6")
	cadena = cadena.replace(/Ç/g,"\xC7");	cadena = cadena.replace(/&Ccedil;/g,"\xC7")
	cadena = cadena.replace(/ç/g,"\xE7");	cadena = cadena.replace(/&ccedil;/g,"\xE7")
	cadena = cadena.replace(/È/g,"\xC8");	cadena = cadena.replace(/&Egrave;/g,"\xC8")
	cadena = cadena.replace(/è/g,"\xE8");	cadena = cadena.replace(/&egrave;/g,"\xE8")
	cadena = cadena.replace(/É/g,"\xC9");	cadena = cadena.replace(/&Eacute;/g,"\xC9")
	cadena = cadena.replace(/é/g,"\xE9");	cadena = cadena.replace(/&eacute;/g,"\xE9")
	cadena = cadena.replace(/Ê/g,"\xCA");	cadena = cadena.replace(/&Ecirc;/g,"\xCA")
	cadena = cadena.replace(/ê/g,"\xEA");	cadena = cadena.replace(/&ecirc;/g,"\xEA")
	cadena = cadena.replace(/Ë/g,"\xCB");	cadena = cadena.replace(/&Euml;/g,"\xCB")
	cadena = cadena.replace(/ë/g,"\xEB");	cadena = cadena.replace(/&euml;/g,"\xEB")
	cadena = cadena.replace(/Ì/g,"\xCC");	cadena = cadena.replace(/&Igrave;/g,"\xCC")
	cadena = cadena.replace(/ì/g,"\xEC");	cadena = cadena.replace(/&igrave;/g,"\xEC")
	cadena = cadena.replace(/Í/g,"\xCD");	cadena = cadena.replace(/&Iacute;/g,"\xCD")
	cadena = cadena.replace(/í/g,"\xED");	cadena = cadena.replace(/&iacute;/g,"\xED")
	cadena = cadena.replace(/Î/g,"\xCE");	cadena = cadena.replace(/&Icirc;/g,"\xCE")
	cadena = cadena.replace(/î/g,"\xEE");	cadena = cadena.replace(/&icirc;/g,"\xEE")
	cadena = cadena.replace(/Ï/g,"\xCF");	cadena = cadena.replace(/&Iuml;/g,"\xCF")
	cadena = cadena.replace(/ï/g,"\xEF");	cadena = cadena.replace(/&iuml;/g,"\xEF")
	cadena = cadena.replace(/Ñ/g,"\xD1");	cadena = cadena.replace(/&Ntilde;/g,"\xD1")
	cadena = cadena.replace(/ñ/g,"\xF1");	cadena = cadena.replace(/&ntilde;/g,"\xF1")
	cadena = cadena.replace(/Ò/g,"\xD2");	cadena = cadena.replace(/&Ograve;/g,"\xD2")
	cadena = cadena.replace(/ò/g,"\xF2");	cadena = cadena.replace(/&ograve;/g,"\xF2")
	cadena = cadena.replace(/Ó/g,"\xD3");	cadena = cadena.replace(/&Oacute;/g,"\xD3")
	cadena = cadena.replace(/ó/g,"\xF3");	cadena = cadena.replace(/&oacute;/g,"\xF3")
	cadena = cadena.replace(/Ô/g,"\xD4");	cadena = cadena.replace(/&Ocirc;/g,"\xD4")
	cadena = cadena.replace(/ô/g,"\xF4");	cadena = cadena.replace(/&ocirc;/g,"\xF4")
	cadena = cadena.replace(/Õ/g,"\xD5");	cadena = cadena.replace(/&Otilde;/g,"\xD5")
	cadena = cadena.replace(/õ/g,"\xF5");	cadena = cadena.replace(/&otilde;/g,"\xF5")
	cadena = cadena.replace(/Ö/g,"\xD6");	cadena = cadena.replace(/&Ouml;/g,"\xD6")
	cadena = cadena.replace(/ö/g,"\xF6");	cadena = cadena.replace(/&ouml;/g,"\xF6")
	cadena = cadena.replace(/Ø/g,"\xD8");	cadena = cadena.replace(/&Oslash;/g,"\xD8")
	cadena = cadena.replace(/ø/g,"\xF8");	cadena = cadena.replace(/&oslash;/g,"\xF8")
	cadena = cadena.replace(/Ù/g,"\xD9");	cadena = cadena.replace(/&Ugrave;/g,"\xD9")
	cadena = cadena.replace(/ù/g,"\xF9");	cadena = cadena.replace(/&ugrave;/g,"\xF9")
	cadena = cadena.replace(/Ú/g,"\xDA");	cadena = cadena.replace(/&Uacute;/g,"\xDA")
	cadena = cadena.replace(/ú/g,"\xFA");	cadena = cadena.replace(/&uacute;/g,"\xFA")
	cadena = cadena.replace(/Û/g,"\xDB");	cadena = cadena.replace(/&Ucirc;/g,"\xDB")
	cadena = cadena.replace(/û/g,"\xFB");	cadena = cadena.replace(/&ucirc;/g,"\xFB")
	cadena = cadena.replace(/Ü/g,"\xDC");	cadena = cadena.replace(/&Uuml;/g,"\xDC")
	cadena = cadena.replace(/ü/g,"\xFC");	cadena = cadena.replace(/&uuml;/g,"\xFC")
	
	cadena = cadena.replace(/\"/g,"\x22")
	cadena = cadena.replace(/\'/g,"\x27")
	cadena = cadena.replace(/\</g,"\x3C")
	cadena = cadena.replace(/\>/g,"\x3E")
	cadena = cadena.replace(/\[/g,"\x5B")
	cadena = cadena.replace(/\]/g,"\x5D")

	cadena = cadena.replace(/¢/g,"\xA2");	cadena = cadena.replace(/&cent;/g,"\xA2") 
	cadena = cadena.replace(/£/g,"\xA3");	cadena = cadena.replace(/&pound;/g,"\xA3")
	cadena = cadena.replace(/€/g,"\u20AC");	cadena = cadena.replace(/&euro;/g,"\u20AC") 
	cadena = cadena.replace(/©/g,"\xA9");	cadena = cadena.replace(/&copy;/g,"\xA9") 
	cadena = cadena.replace(/®/g,"\xAE");	cadena = cadena.replace(/&reg;/g,"\xAE") 
	cadena = cadena.replace(/ª/g,"\xAA");	cadena = cadena.replace(/&ordf;/g,"\xAA") 
	cadena = cadena.replace(/º/g,"\xBA");	cadena = cadena.replace(/&ordm;/g,"\xBA") 
	cadena = cadena.replace(/°/g,"\xB0");	cadena = cadena.replace(/&deg;/g,"\xB0") 
	cadena = cadena.replace(/±/g,"\xB1");	cadena = cadena.replace(/&plusmn;/g,"\xB1")
	cadena = cadena.replace(/×/g,"\xD7");	cadena = cadena.replace(/&times;/g,"\xD7") 
	
	return cadena;
}


function confirmarSubmit() {
	if (confirm("¿ Está seguro ?")) {
		return true;
	}else{
		return false;
	}
}


///////////////////////////////////////////////////////////////////
// Función que valida un email usando una expresion regular      //
// Devuelve true si es un mail válido, y false en caso contrario //
// Parámeros de entrada :                                        //
//			cadena - el email a validar              //
///////////////////////////////////////////////////////////////////


function validaEmail(cadena) {
	var patron = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;

	if ((cadena.length!=0)&&(patron.test(cadena))) {
		return true;
	}else{
		return false;
	}
}

function validaUsuario(cadena,minlen,maxlen) {
	var patron = eval("/^[_A-Za-z0-9]{" + minlen + "}/");

	if ((cadena.length<=maxlen)&&(patron.test(cadena))) {
		return true;
	}else{
		return false;
	}
}

function validaPassword(cadena,minlen,maxlen) {
	var patron = eval("/^[_A-Za-z0-9]{" + minlen + "}/");

	if ((cadena.length<=maxlen)&&(patron.test(cadena))) {
		return true;
	}else{
		return false;
	}
}


function validaNombreFichero(cadena,minlen,maxlen) {
	var patron = eval("/^[_A-Za-z0-9]{" + minlen + "}/");

	if ((cadena.length<=maxlen)&&(patron.test(cadena))) {
		return true;
	}else{
		return false;
	}
}

function validaNumerico(cadena,minlen,maxlen,permiteNulo) {
	var patron = eval("/^[0-9]{" + minlen + "}/");

	if (((cadena.length<=maxlen)&&(patron.test(cadena))) || ((cadena.length==0) && permiteNulo)) {
		return true;
	}else{
		return false;
	}
}

//function validaNombre(cadena,minlen,maxlen) {
//	var patron = /^[a-zA-Záéíóú\ ]*$/;	
//
//	if ((cadena.length!=0)&&(cadena.length>=minlen)&&(cadena.length<=maxlen)&&(patron.test(cadena))) {
//		return true;
//	}else{
//		return false;
//	}
//}

function validaTexto(cadena,minlen,maxlen) {

	if ((cadena.length!=0)&&(cadena.length>=minlen)&&(cadena.length<=maxlen)) {
		return true;
	}else{
		return false;
	}
}

function validaFecha(cadena) {
	var patron = /(\d{2})-(\d{2})-(\d{4})/;

	if ((patron.test(cadena))) {
		return true;
	}else{
		return false;
	}
}


//**********************************************************************
//  BEGIN MODAL DIALOG CODE (can also be loaded as external .js file)
//***********************************************************************/
// Global for brower version branching.
var Nav4 = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))

// One object tracks the current modal dialog opened from this window.
var dialogWin = new Object()

// Generate a modal dialog.
// Parameters:
//    url -- URL of the page/frameset to be loaded into dialog
//    width -- pixel width of the dialog window
//    height -- pixel height of the dialog window
//    returnFunc -- reference to the function (on this page)
//                  that is to act on the data returned from the dialog
//    args -- [optional] any data you need to pass to the dialog
function openDGDialog(url, width, height, returnFunc, args) {
	if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
		// Initialize properties of the modal dialog object.
		dialogWin.returnFunc = returnFunc
		dialogWin.returnedValue = ""
		dialogWin.args = args
		dialogWin.url = url
		dialogWin.width = width
		dialogWin.height = height
		// Keep name unique so Navigator doesn't overwrite an existing dialog.
		dialogWin.name = (new Date()).getSeconds().toString()
		// Assemble window attributes and try to center the dialog.
		if (Nav4) {
			// Center on the main window.
			dialogWin.left = window.screenX + 
			   ((window.outerWidth - dialogWin.width) / 2)
			dialogWin.top = window.screenY + 
			   ((window.outerHeight - dialogWin.height) / 2)
			var attr = "screenX=" + dialogWin.left + 
			   ",screenY=" + dialogWin.top + ",resizable=no,width=" + 
			   dialogWin.width + ",height=" + dialogWin.height
		} else {
			// The best we can do is center in screen.
			dialogWin.left = (screen.width - dialogWin.width) / 2
			dialogWin.top = (screen.height - dialogWin.height) / 2
			var attr = "left=" + dialogWin.left + ",top=" + 
			   dialogWin.top + ",resizable=no,width=" + dialogWin.width + 
			   ",height=" + dialogWin.height
		}
		
		// Generate the dialog and make sure it has focus.
		dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr)
		dialogWin.win.focus()
	} else {
		dialogWin.win.focus()
	}
}

// Event handler to inhibit Navigator form element 
// and IE link activity when dialog window is active.
function deadend() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus()
		return false
	}
}

// Since links in IE4 cannot be disabled, preserve 
// IE link onclick event handlers while they're "disabled."
// Restore when re-enabling the main window.
var IELinkClicks

// Disable form elements and links in all frames for IE.
function disableForms() {
	IELinkClicks = new Array()
	for (var h = 0; h < frames.length; h++) {
		for (var i = 0; i < frames[h].document.forms.length; i++) {
			for (var j = 0; j < frames[h].document.forms[i].elements.length; j++) {
				frames[h].document.forms[i].elements[j].disabled = true
			}
		}
		IELinkClicks[h] = new Array()
		for (i = 0; i < frames[h].document.links.length; i++) {
			IELinkClicks[h][i] = frames[h].document.links[i].onclick
			frames[h].document.links[i].onclick = deadend
		}
		frames[h].window.onfocus = checkModal
    	frames[h].document.onclick = checkModal
	}
}

// Restore IE form elements and links to normal behavior.
function enableForms() {
	for (var h = 0; h < frames.length; h++) {
		for (var i = 0; i < frames[h].document.forms.length; i++) {
			for (var j = 0; j < frames[h].document.forms[i].elements.length; j++) {
				frames[h].document.forms[i].elements[j].disabled = false
			}
		}
		for (i = 0; i < frames[h].document.links.length; i++) {
			frames[h].document.links[i].onclick = IELinkClicks[h][i]
		}
	}
}

// Grab all Navigator events that might get through to form
// elements while dialog is open. For IE, disable form elements.
function blockEvents() {
	if (Nav4) {
		window.captureEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = deadend
	} else {
		disableForms()
	}
	window.onfocus = checkModal
}
// As dialog closes, restore the main window's original
// event mechanisms.
function unblockEvents() {
	if (Nav4) {
		window.releaseEvents(Event.CLICK | Event.MOUSEDOWN | Event.MOUSEUP | Event.FOCUS)
		window.onclick = null
		window.onfocus = null
	} else {
		enableForms()
	}
}

// Invoked by onFocus event handler of EVERY frame,
// return focus to dialog window if it's open.
function checkModal() {
	setTimeout("finishChecking()", 50)
	return true
}

function finishChecking() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus() 
	}
}
//**************************
//  END MODAL DIALOG CODE
//**************************/

// Function to run upon closing the dialog with "OK".
function setPrefs() {
	// We're just displaying the returned value in a text box.
	//document.returned.searchURL.value = dialogWin.returnedValue
	return true;
}
