function check_cookies() {
	var validado = (document.cookie != '');
	return validado;
}

function resaltar(control,flag) {
	if (control)
		control.className = (flag) ? 'opcion_a':'opcion';
}

function validar_texto(obj,ancho) {
	if (obj.value.length > ancho) {
		alert('Texto demasiado largo.');
		obj.select();
	}
	return false;
}

//elimina espacios en blanco al principio de una cadena
function ltrim(cadena) {
	while (cadena.substring(0,1) == ' ') {
		cadena = cadena.substring(1,cadena.length);
	}
	return cadena;
}

//elimina espacios en blanco al final de una cadena
function rtrim(cadena) {
	while (cadena.substring(cadena.length-1,cadena.length) == ' ') {
		cadena = cadena.substring(0,cadena.length-1);
	}
	return cadena;
}

//elimina espacios en blanco al principio y fin de una cadena
function trim(cadena) {
	cadena = rtrim(ltrim(cadena));
	return cadena;
}

//reemplaza un caracter por otro en una cadena
function reemplazar(cadena,val_inicial,val_nuevo) {
	str = '' + cadena;
	while (str.indexOf(val_inicial) > -1) {
		pos_at = str.indexOf(val_inicial);
		str    = (str.substring(0,pos_at) + val_nuevo + str.substring((pos_at + val_inicial.length),str.length));
	}
	return str;
}

function menu_opcion(dir) {
	self.location.href = dir;
}

function menu_anuncio(dir) {
	var newWindow = window.open(dir, 'publicidad', 'fullscreen=no,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,directories=no,location=no,width=500,height=400');
}

function redirigir(dir) {
	self.location.href = dir;
}

function homepage(obj,address) {
	if (window.external) {
		obj.setHomePage(address);
	} else {
		alert('Lo sentimos, pero su navegador no contempla esta funcionalidad.');
	}
} 

function favoritos() {
	if (document.all)
		window.external.AddFavorite(location.href, document.title);
	else
		alert('Lo sentimos, pero su navegador no contempla esta funcionalidad.');
}

//muestra una ventana de progreso
function progreso_msg(flag) {
	var v_progreso = top.document.getElementById('progreso');
	if (v_progreso)
		v_progreso.style.display = (flag) ? '':'none';
	return true;
}

//escribe la fecha y hora y se va actualizando
function startclock() {
	var thetime = new Date();
	var nhours  = thetime.getHours();
	var nmins   = thetime.getMinutes();
	var nsecn   = thetime.getSeconds();
	var nday    = thetime.getDay();
	var nmonth  = thetime.getMonth();
	var ntoday  = thetime.getDate();
	var nyear   = thetime.getFullYear();
	var AorP    = (nhours >= 12) ? 'pm' : 'am';
	if (nhours >= 13)
		nhours -= 12;
	if (nhours == 0)
		nhours = 12;
	nhours = (nhours < 10) ? '0'+ nhours : nhours + '';
	nsecn  = (nsecn < 10) ? '0'+ nsecn : nsecn + '';
	nmins  = (nmins < 10) ? '0'+ nmins : nmins + '';
	
	switch (nday) {
		case 0:
			nday = 'domingo';
			break;
		case 1:
			nday = 'lunes';
			break;
		case 2:
			nday = 'martes';
			break;
		case 3:
			nday = 'miércoles';
			break;
		case 4:
			nday = 'jueves';
			break;
		case 5:
			nday = 'viernes';
			break;
		case 6:
			nday = 'sábado';
			break;
	}
	
	switch (nmonth) {
		case 0:
			nmonth = 'enero';
			break;
		case 1:
			nmonth = 'febrero';
			break;
		case 2:
			nmonth = 'marzo';
			break;
		case 3:
			nmonth = 'abril';
			break;
		case 4:
			nmonth = 'mayo';
			break;
		case 5:
			nmonth = 'junio';
			break;
		case 6:
			nmonth = 'julio';
			break;
		case 7:
			nmonth = 'agosto';
			break;
		case 8:
			nmonth = 'septiembre';
			break;
		case 9:
			nmonth = 'octubre';
			break;
		case 10:
			nmonth = 'noviembre';
			break;
		case 11:
			nmonth = 'diciembre';
			break;
	}
	
	if (nyear > 99 && nyear < 2000)
		nyear += 1900;
	
	var fecha = nday + ' ' + ntoday + ' de ' + nmonth + ', ' + nyear;
	var hora  = nhours + ':' + nmins + ':' + nsecn + ' ' + AorP;
	var tiempo = fecha + ' ' + '<span class="clockspot">' + hora+ '</span>';
	
	var clockspot = document.getElementById('clockspot');
	if (clockspot) {
		clockspot.innerHTML = fecha;
		setTimeout('startclock()',1000);
	}
}

//efecto terremoto
function shake_xy(n) {
	if (self.moveBy) {
		for (var i = 10; i > 0; i--) {
			for (var j = n; j > 0; j--) {
				//movemos eje de coordenadas
				self.moveBy(0,i);
				self.moveBy(i,0);
				
				//movemos eje de ordenadas
				self.moveBy(0,-i);
				self.moveBy(-i,0);
			}
		}
	}
}

//convierte la fecha en formato español (dd/mm/yy) a americano (mm/dd/yy)
function date_convert(fecha) {
	var nueva_fecha = fecha.split('/');
	if (nueva_fecha.length == 3)
		nueva_fecha = nueva_fecha[1] + '/' + nueva_fecha[0] + '/' + nueva_fecha[2];
	else
		nueva_fecha = false;
	return nueva_fecha;
}

//suma los días señalados a una fecha
function dateadd(fecha,dias) {
	var fecha_aux, dia_fecha, mes_fecha, anno_fecha;
	fecha_aux = date_convert(fecha);
	if (fecha_aux) {
		fecha_aux = new Date(fecha_aux);
		fecha_aux.setTime(fecha_aux.getTime() + dias*24*60*60*1000);
		dia_fecha  = fecha_aux.getDate();
		dia_fecha  = (dia_fecha < 10) ? '0'+ dia_fecha : dia_fecha + '';
		mes_fecha  = fecha_aux.getMonth()+1;
		mes_fecha  = (mes_fecha < 10) ? '0'+ mes_fecha : mes_fecha + '';
		anno_fecha = fecha_aux.getFullYear();
		fecha_aux = dia_fecha + '/' + mes_fecha + '/' + anno_fecha;
	}
	return fecha_aux;
}

//calcula la diferencia entre dos fechas (en milisegundos por defecto)
function datediff(fecha1,fecha2) {
	var diff;
	var intervalo;
	if (arguments.length > 2)
		intervalo = arguments[2];
	
	//convertimos el string de fecha a formato fecha
	date_aux  = date_convert(fecha1);
	var date1 = new Date(date_aux);
	date_aux  = date_convert(fecha2);
	var date2 = new Date(date_aux);
	
	//calculamos la diferencia en milisegundos
	var diff_ms1 = date1.getTime();
	var diff_ms2 = date2.getTime();
	diff = diff_ms2 - diff_ms1;
	
	//calculamos la diferencia en el intervalo elegido
	switch (intervalo) {
		case 'w':					//semanas
			diff  = diff / (1000*60*60*24*7);
			break;
		case 'd':					//días
			diff = diff / (1000*60*60*24);
			break;
		case 'h':					//horas
			diff  = diff / (1000*60*60);
			break;
		case 'n':					//minutos
			diff = diff / (1000*60);
			break;
		case 's':					//segundos
			diff = diff / 1000;
			break;
	}
	diff = Math.round(diff*100)/100;
	return diff;
}

//reemplaza un caracter por otro en una cadena
function reemplazar(cadena,val_inicial,val_nuevo) {
	str = '' + cadena;
	while (str.indexOf(val_inicial) > -1) {
		pos_at = str.indexOf(val_inicial);
		str    = (str.substring(0,pos_at) + val_nuevo + str.substring((pos_at + val_inicial.length),str.length));
	}
	return str;
}

//calcula la posición de un objeto en pantalla
function pos_x_obj(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function pos_y_obj(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y)
		curtop += obj.y;
	return curtop;
}

//dirige la página hacia la posición de un objeto
function scroll_to(obj) {
	x = pos_x_obj(obj);
	y = pos_y_obj(obj);
	self.scrollTo(x,y);
}

var pvw_timeout = false;
var pvw_delay   = 10000;
var pvw_ancho   = 120;
var pvw_alto    = 80;
var thb_ancho   = 450;
var thb_alto    = 300;
//oculta la prevista de imagen
function img_ocultar() {
	var n_imagen = document.getElementById('img_preview');
	if (n_imagen) {
		n_imagen.style.display = 'none';
		n_imagen.width = 500;
		if (pvw_timeout) {
			clearTimeout(pvw_timeout);
			pvw_timeout = false;
		}
	}
}

//muestra/oculta una ventana
function mostrar_ventana(control,flag) {
	var n_ventana = document.getElementById(control);
	if (n_ventana)
		n_ventana.style.display = (flag) ? '':'none';
}

function do_nothing() {
}

//espera un tiempo determinado
function wait(retardo) {
	setTimeout('do_nothing()',retardo);
}

//abre la prevista de imagen
function img_ver(obj) {
	var img = new Image();
	if (pvw_timeout) {
		clearTimeout(pvw_timeout);
		pvw_timeout = false;
	}
	var pos_x = 0;
	var pos_y = 0;
	var control      = document.getElementById(obj);
	var control_aux  = document.getElementById(obj + '_aux');
	var pvw_imagen   = document.getElementById(obj + '_pvw');
	var n_imagen_dim = document.getElementById(obj + '_dim');
	if (control) {
		var img_src = 'file:///';
		if (control.value == '')
			if (control_aux) {
				control = control_aux;
				img_src = control.getAttribute('trgdir');
			}
		if (control.value != '') {
			img_src  += control.value;
			img.src   = img_src;
			ancho_aux = img.width;
			alto_aux  = img.height;
			
			if (pvw_imagen) {
				pvw_imagen.src = img_src;
				
				//calculamos el tamaño como thumbnail
				if (ancho_aux > pvw_ancho) {
					alto_aux  = (alto_aux*pvw_ancho)/ancho_aux;
					ancho_aux = pvw_ancho;
				}
				if (alto_aux > pvw_alto) {
					ancho_aux = (ancho_aux*pvw_alto)/alto_aux;
					alto_aux  = pvw_alto;
				}
				ancho_aux = Math.round(ancho_aux);
				alto_aux  = Math.round(alto_aux);
				
				if (n_imagen_dim && ancho_aux > 0 && alto_aux > 0)
					n_imagen_dim.innerHTML = 'dimensiones reales: ' + ancho_aux + 'x' + alto_aux;
				
				if (ancho_aux == 0)
					ancho_aux = pvw_ancho;
				if (alto_aux == 0)
					alto_aux = pvw_alto;
				pvw_imagen.width  = ancho_aux;
				pvw_imagen.height = alto_aux;
			} else {
				var thb_imagen = document.getElementById('img_preview');
				if (thb_imagen) {
					thb_imagen.src = img_src;
					
					//calculamos el tamaño como thumbnail
					if (ancho_aux > thb_ancho) {
						alto_aux  = (alto_aux*thb_ancho)/ancho_aux;
						ancho_aux = thb_ancho;
					}
					if (alto_aux > thb_alto) {
						ancho_aux = (ancho_aux*thb_alto)/alto_aux;
						alto_aux  = thb_alto;
					}
					ancho_aux = Math.round(ancho_aux);
					alto_aux  = Math.round(alto_aux);
					
					pos_x = pos_x_obj(control);
					pos_y = pos_y_obj(control);
					
					if (ancho_aux == 0)
						ancho_aux = thb_ancho;
					if (alto_aux == 0)
						alto_aux = thb_alto;
					mostrar = (thb_imagen.style.display != '');
					thb_imagen.style.left = pos_x + 250 - ancho_aux;
					thb_imagen.style.top  = pos_y + 20;
					thb_imagen.width      = ancho_aux;
					thb_imagen.height     = alto_aux;
					thb_imagen.style.display = (mostrar) ? '' : 'none';
					if (mostrar)
						pvw_timeout = setTimeout('img_ocultar()',pvw_delay);
				}
			}
		} else {
			alert('ha de cargar una imagen para poder verla');
		}
	}
}

//función para desactivar un radio-button
function radio_uncheck (obj) {
	var estado;
	if (window[obj.name] == obj.value) {
		estado = false;
		obj.checked = estado;
		window[obj.name] = '';
	} else {
		estado = true;
		window[obj.name] = obj.value;
	}
	return estado;
}

//mueve el elemento seleccionado
function drag_obj(obj,ev) {
	var deltaX = ev.clientX - parseInt(obj.style.left,10);
	var deltaY = ev.clientY - parseInt(obj.style.top,10);
	if (window.event) {
		document.attachEvent('onmousemove',mover_obj);
		document.attachEvent('onmouseup',detener_obj);
		ev.cancelBubble = true;
		ev.returnValue  = false;
	} else {
		document.addEventListener('mousemove',mover_obj,true);
		document.addEventListener('mouseup',detener_obj,true);
		ev.stopPropagation();
		ev.preventDefault();
	}
	
	//mueve el elemento a la posición actual del ratón
	function mover_obj(ev) {
		ev = (window.event) ? window.event : ev;
		
		var pos_x     = ev.clientX - deltaX;
		var pos_y     = ev.clientY - deltaY;
		var pos_x_max = document.body.offsetWidth;
		var pos_y_max = document.body.offsetHeight;
		
		if (pos_x < 0)
			pos_x = 0;
		if (pos_x > pos_x_max)
			pos_x = pos_x_max;
		if (pos_y < 0)
			pos_y = 0;
		if (pos_y > pos_y_max)
			pos_y = pos_y_max;
		
		obj.style.left = pos_x + 'px';
		obj.style.top  = pos_y + 'px';
		
		if (window.event)
			ev.cancelBubble = true;
		else
			ev.stopPropagation();
	}
	
	//captura liberación del ratón
	function detener_obj(ev) {
		if (window.event) {
			e = window.event;
			document.detachEvent('onmouseup',detener_obj);
			document.detachEvent('onmousemove',mover_obj);
			e.cancelBubble = true;
		} else {
			document.removeEventListener('mouseup',detener_obj,true);
			document.removeEventListener('mousemove',mover_obj,true);
			ev.stopPropagation();
		}
	}
}

//funciones para el multi-select
var a_valores_aux;

function sel_insertar(obj) {
	var a_valores;
	var a_pos;
	var str   = sel_capturar_aux(obj);
	a_valores = str.split(',');
	for (var i=0; i<a_valores.length-1; i++) {
		if (a_valores[i]==1)
			a_pos = i;
	}
	
	for (var i=0; i<a_valores_aux.length-1; i++) {
		if (i != a_pos)
			obj.options[i].selected = (a_valores_aux[i]==1);
		
		obj.options[a_pos].selected = (a_valores_aux[a_pos] != 1);
	}
}

function sel_capturar_aux(obj) {
	var str = '';
	for (var i=0; i < obj.length; i++) {
		estado = (obj.options[i].selected) ? 1 : 0;
		str   += estado + ',';
	}
	return str;
}

function sel_capturar(obj) {
	var a_valores = '';
	a_valores     = sel_capturar_aux(obj);
	a_valores_aux = a_valores.split(',');
}

//mueve el elemento seleccionado
function drag_obj(obj,ev) {
	var deltaX = ev.clientX - parseInt(obj.style.left,10);
	var deltaY = ev.clientY - parseInt(obj.style.top,10);
	if (window.event) {
		document.attachEvent('onmousemove',mover_obj);
		document.attachEvent('onmouseup',detener_obj);
		ev.cancelBubble = true;
		ev.returnValue  = false;
	} else {
		document.addEventListener('mousemove',mover_obj,true);
		document.addEventListener('mouseup',detener_obj,true);
		ev.stopPropagation();
		ev.preventDefault();
	}
	
	//mueve el elemento a la posición actual del ratón
	function mover_obj(ev) {
		obj.style.left = (ev.clientX - deltaX) + 'px';
		obj.style.top  = (ev.clientY - deltaY) + 'px';
		ev.cancelBubble = true;
		if (ev.stopPropagation)
			ev.stopPropagation();
	}
	
	//captura liberación del ratón
	function detener_obj(ev) {
		if (window.event) {
			document.detachEvent('onmouseup',detener_obj);
			document.detachEvent('onmousemove',mover_obj);
			ev.cancelBubble = true;
		} else {
			document.removeEventListener('mouseup',detener_obj,true);
			document.removeEventListener('mousemove',mover_obj,true);
			ev.stopPropagation();
		}
	}
}
