
function titulodoc(materia, titulo){
	if(parent.titulo){ 
		parent.titulo.location.replace("/util/stdtitle.php?mat="+materia+"&title="+titulo); 
	}
}
function menudoc(materia, model, root){
	if(parent.barra){
		parent.barra.location.replace("/include/menu.php?mat="+materia+"&model="+model+"&root="+root); 
	} 
}

function menudoc_util(pagina, titulo, imagen, alt){
	if (!imagen || !alt) {
		var imagen = '';
		var alt = '';
	}
	if(parent.barra){
		parent.barra.location.replace("/include/menu_util.php?pag="+pagina+"&titulo="+titulo+"&imagen="+imagen+"&alt="+alt); 
	} 
}

/*
Respetamos los creditos del autor:
	Javascript for Bubble Tooltips by Alessandro Fulciniti.
	http://pro.html.it - http://web-graphics.com 
*/


var tunIex=navigator.appName=="Microsoft Internet Explorer"?true:false; //Navegador utilizado

function enableTooltips(){
var links,i,h;
if(!document.getElementById || !document.getElementsByTagName) return;
//AddCss();
h=document.createElement("span");
h.id="btc";
h.setAttribute("id","btc");
h.style.position="absolute";
document.getElementsByTagName("body")[0].appendChild(h);
links=document.getElementsByTagName("a");
for(i=0;i<links.length;i++){
	if(tunIex){ t=links[i].getAttribute("className");}
	else{t=links[i].getAttribute("class");}
  if(t==null || t.length==0){}
	else if (t=='flotante'){	
					Prepare(links[i]);
				}
	}
}

function Prepare(el){
	var tooltip,t,b,s,l;
	t=el.getAttribute("title");
	if(t==null || t.length==0) t="link:";
	el.removeAttribute("title");
	tooltip=CreateEl("span","tooltip");
	s=CreateEl("span","top");
	s.appendChild(document.createTextNode(t));
	tooltip.appendChild(s);
	b=CreateEl("b","bottom");
	//l=el.getAttribute("href");
	//if(l.length>28) l=l.substr(0,25)+"...";
	//b.appendChild(document.createTextNode(l));
	tooltip.appendChild(b);
	setOpacity(tooltip);
	el.tooltip=tooltip;
	el.onmouseover=showTooltip;
	el.onmouseout=hideTooltip;
	el.onmousemove=Locate;
}

function showTooltip(e){
document.getElementById("btc").appendChild(this.tooltip);
Locate(e);
}

function hideTooltip(e){
var d=document.getElementById("btc");
if(d.childNodes.length>0) d.removeChild(d.firstChild);
}

function setOpacity(el){
el.style.filter="alpha(opacity:95)";
el.style.KHTMLOpacity="0.95";
el.style.MozOpacity="0.95";
el.style.opacity="0.95";
}

function CreateEl(t,c){
var x=document.createElement(t);
x.className=c;
x.style.display="block";
return(x);
}
/*
function AddCss(){
var l=CreateEl("link");
l.setAttribute("type","text/css");
l.setAttribute("rel","stylesheet");
l.setAttribute("href","bt.css");
l.setAttribute("media","screen");
document.getElementsByTagName("head")[0].appendChild(l);
}
*/
function Locate(e){
var posx=0,posy=0;
if(e==null) e=window.event;
if(e.pageX || e.pageY){
    posx=e.pageX; posy=e.pageY;
    }
else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
        posx=e.clientX+document.documentElement.scrollLeft;
        posy=e.clientY+document.documentElement.scrollTop;
        }
    else{
        posx=e.clientX+document.body.scrollLeft;
        posy=e.clientY+document.body.scrollTop;
        }
    }
document.getElementById("btc").style.top=(posy+10)+"px";
document.getElementById("btc").style.left=(posx-20)+"px";
}

/* FUNCION: dameValorCheck
 * Parametros:
 *	 check - campo de tipo radio
 * Descripción:
 * 	 devuelve el valor seleccionado de un check o vacio si no se ha seleccionado ninguno
*/
function dameValorCheck(check){ 
	var index;
	var chequeado;

	valor = '';
  for (index = 0; index < check.length; ++index){ 
  	if (check[index].checked == true){	
    	valor = check[index].value;
    } 
	} 
	return valor	
}

/* FUNCION: isEmpty
 * Parametros:
 *    cadena de texto
 * Descripción:
 *	 devuelve true si la cadena pasada esta vacia
 *	 ignora espacios en blanco
*/
function isEmpty(s) {
	return !Boolean(s.replace(/^\s*|\s*$/g, "").length);
}
/* FUNCION: IsChecked
 * Parametros:
 *    campo de tipo check
 * Descripción:
 *	 devuelve true si el campo que le pasamos esta marcado
*/
function IsChecked(check) 
{ 
	if (check.checked){
     return "si"
  }else{
     return "no"
  } 
}

/* FUNCION: dameValorSelect
 * Parametros:
 *	 field - campo de tipo select cuyo valor se quiere obtener
 * Descripción:
 * 	 Obtiene el valor seleccionado de un campo de tipo SELECT de un formulario
 *	 si no se ha seleccionado ningun valor devuelve una cadena vacia
*/
function dameValorSelect(field){
	var i = field.selectedIndex;
 	if (i == -1)   return "";
  else   return (field.options[i].value == "") ? "": field.options[i].value;
}	


/* FUNCION: dameTextSelect
 * Parametros:
 *	 field - campo de tipo select cuyo valor se quiere obtener
 * Descripción:
 * 	 Obtiene el valor seleccionado de un campo de tipo SELECT de un formulario
 *	 si no se ha seleccionado ningun valor devuelve una cadena vacia
*/
function dameTextSelect(field){
	var i = field.selectedIndex;
  if (i == -1)   return "";
  else   return field.options[i].text;
}	


/* FUNCION: ClearItems
 * Parametros:
 *	 control - campo de tipo select
 * Descripción:
 * 	 Inicializa un control de lista desplegable
*/
function ClearItems( control ){
  for (var i=0; i < control.options.length; i++){
   	control.options[i] = null;
    }
  control.options.length = 0;
}

/* FUNCION: validarnumeros
 * Parametros:
 *	 campo - campo que contiene el valor numérico
 * Descripción:
 * 	Función para validar los numéricos y cambiar el punto por la coma
*/
function validarnumeros(campo){
cadena = campo.value;
error = "NO";
caracter = "NO";
valor = campo.value;
if (cadena != ""){
	cont = 0;
	for (x = 0; x <= cadena.length-1; x++){
		if (cadena.substr(x,1) == "," || cadena.substr(x,1) == "." ){ 
			cont = cont + 1;
		}else
			{
				if(isNaN(parseInt(cadena.substr(x,1)))){
					caracter = "SI";
			}	
		}
	}	
	

	if (cont > 1 || caracter == "SI"){
		if (caracter == "SI"){
		 alert("AVISO\nEl número introducido contiene caracteres no validos");
		}else{
			if (cont > 1){			
				alert("AVISO\nDebe utilizar unicamente el punto o la coma para introducir los decimales.\nNno ulitlice ningún separador de miles");
			}
		}
		error = "SI";
	}else{
		cadena = cadena.replace(",",".");
		resultado = parseFloat(cadena);
		resultado = resultado*100;
		resultado = Math.round(resultado);
		resultado = resultado/100;
		//resultado = resultado.toString();
		//resultado = resultado.replace(".",",");
		valor = resultado;
	}
	
	if (error == "SI"){	
		valor = "";
		campo.focus();
	}	
}
return valor;
}

function abrir_ventana(url, ancho, alto) {
	izquierda = (screen.width) ? (screen.width-ancho)/2 : 100;
	arriba = (screen.height) ? (screen.height-alto)/2 : 100;
	opciones = 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes, resizable=no,width=' + ancho + ',height=' + alto + ',left=' + izquierda + ',top=' + arriba + '';
	window.open(url, 'popUp', opciones);
}

/* FUNCION: validarnumeros
 * Parametros:
 *	 fecha1, fecha2 -> fechas en formato dd/mm/yyyy
 * Descripción:
 * 	Función que compara dos fechas devolviendo true si la primera en menoR o igual que la segunda
 *	y false en cualquier otro caso
*/
function comparar_fechas(fecha1, fecha2){ 
	var array_fecha1 = fecha1.split("/") 
  var array_fecha2 = fecha2.split("/") 
    
	//si el array no tiene tres partes, la fecha es incorrecta 
	if (array_fecha1.length!=3 || array_fecha2.length!=3 ){
		return false
	}
	// si el primer año es menor que el de la segunda fecha --> OK
	if ( parseInt(array_fecha1[2], 10) < parseInt(array_fecha2[2], 10)){
		return true
	}
	// si el primer año es mayor que el de la segunda fecha --> NOK       
	if ( parseInt(array_fecha1[2], 10) > parseInt(array_fecha2[2], 10)){
		return false 
	}	
	// años iguales, mes menor OK
	if ( parseInt(array_fecha1[1], 10)< parseInt(array_fecha2[1], 10) ){
		return true
	}
  // años iguales, mes mayor NOK
	if ( parseInt(array_fecha1[1], 10) > parseInt(array_fecha2[1], 10) ){
		return false 
	}
	// mes y año igual       
  if ( parseInt(array_fecha1[0], 10)<= parseInt(array_fecha2[0], 10) ){
  	return true
  }
  
  
  return false
  
} 

/* FUNCION: validarFecha
 * Parametros:
 *	 campo - campo de tipo text que contiene la fecha a validar
 * Descripción:
 * 	 Indica si una fecha es correcta. Deberá esta en formato dd/mm/aaaa
*/
function validarFecha(campo) {

if (campo.value ==''){
	return true
};

error="NO";
var nMes = parseInt(campo.value.substr(3, 2), 10);
var nAno = parseInt(campo.value.substr(6,4), 10);
var nDia = parseInt(campo.value.substr(0,2), 10);

//calculamos el numero maximo de dias del mes:
var nRes = 0;
switch (nMes){
     case 1: nRes = 31; break;
     case 2: nRes = 28; break; //si el año es bisiesto luego se le suma uno.
     case 3: nRes = 31; break;
     case 4: nRes = 30; break;
     case 5: nRes = 31; break;
     case 6: nRes = 30; break;
     case 7: nRes = 31; break;
     case 8: nRes = 31; break;
     case 9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
}
//numero maximo de dias si el año es bisiesto
if ((nMes == 2) && (nAno % 4) == 0){
	nRes=nRes + 1;
}

//primero comprobamos que los caracteres sean numerico y dentro de los parametros indicados:
if (!(campo.value.match("[0123][0123456789][/][01][0123456789][/][012][0123456789][0123456789][0123456789]"))){
	error="SI";
}

//comprobamos que el mes no sea mayor de 12
if (nMes>12){
	error="SI";
}
//comprobamos que el dia no sea mayor de del número de dias que puede tener el mes
if (nDia>nRes){
	error="SI";
}

//mostramos el mensaje si la fecha introducida no es correcta
if (error=="SI"){
	alert ( "La fecha introducida: " + campo.value + " no es válida.\nDebe introducirla en formato dd/mm/aaaa ");
	campo.value="";
	campo.focus();
}	
}

/* FUNCION: validarFecha_sin_msg
 * Parametros:
 *	 campo - campo de tipo text que contiene la fecha a validar
 * Descripción:
 * 	 Indica si una fecha es correcta. Deberá esta en formato dd/mm/aaaa
 *   Esta función es identica a la de validarFecha, solo que esta no saca un 
 *	 alert de aviso, ni borra el contenido del campo.
*/
function validarFecha_sin_msg(campo) {

if (campo.value ==''){
	return true
};

error="NO";
var nMes = parseInt(campo.value.substr(3, 2), 10);
var nAno = parseInt(campo.value.substr(6,4), 10);
var nDia = parseInt(campo.value.substr(0,2), 10);

//calculamos el numero maximo de dias del mes:
var nRes = 0;
switch (nMes){
     case 1: nRes = 31; break;
     case 2: nRes = 28; break; //si el año es bisiesto luego se le suma uno.
     case 3: nRes = 31; break;
     case 4: nRes = 30; break;
     case 5: nRes = 31; break;
     case 6: nRes = 30; break;
     case 7: nRes = 31; break;
     case 8: nRes = 31; break;
     case 9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
}
//numero maximo de dias si el año es bisiesto
if ((nMes == 2) && (nAno % 4) == 0){
	nRes=nRes + 1;
}

//primero comprobamos que los caracteres sean numerico y dentro de los parametros indicados:
if (!(campo.value.match("[0123][0123456789][/][01][0123456789][/][012][0123456789][0123456789][0123456789]"))){
	error="SI";
}

//comprobamos que el mes no sea mayor de 12
if (nMes>12){
	error="SI";
}
//comprobamos que el dia no sea mayor de del número de dias que puede tener el mes
if (nDia>nRes){
	error="SI";
}

//mostramos el mensaje si la fecha introducida no es correcta
if (error=="SI"){
	return false
}	

return true
}

