function entradaDuplicada(valueListaOrigen,listaDestino)
{
	/* CUIDADO!! EL contador no puede ser i o bien debe ser declarada local!!*/
	//alert(valueListaOrigen);
	var j; 	
	for (j=0; j < document.forms[0][listaDestino].length; j++)
	{		
		valueListaDestino = document.forms[0][listaDestino][j].value;
		//alert(j);				
		if (valueListaOrigen == valueListaDestino) return true;			
	}
	return false;
}

function traspasaElemento(listaOrigen,listaDestino,eliminaOrigen)
{
	//alert(document.forms[0][listaOrigen].selectedIndex);
	//alert(document.forms[0][listaOrigen][document.forms[0][listaOrigen].selectedIndex].value);
	//alert(document.forms[0][listaOrigen][document.forms[0][listaOrigen].selectedIndex].text);
	var i;	
	if (document.forms[0][listaOrigen].multiple)
	{
		for (i=0; i < document.forms[0][listaOrigen].length; i++)
		{
			if (document.forms[0][listaOrigen][i].selected) 
			{
				valueListaOrigen = document.forms[0][listaOrigen][i].value;
				textListaOrigen = document.forms[0][listaOrigen][i].text;	
				// afegir a listaDestino
				//alert(valueListaOrigen);
				if ( !entradaDuplicada(valueListaOrigen,listaDestino) )
					document.forms[0][listaDestino].options[document.forms[0][listaDestino].length] = new Option(textListaOrigen,valueListaOrigen);
				// eliminar de listaOrigen
				if(eliminaOrigen) document.forms[0][listaOrigen].options[i] = null;							
			}
		}	
	}
	else
	{
		if (document.forms[0][listaOrigen].selectedIndex >= 0) // -1 si no hay seleccionados	
		{			
			valueListaOrigen = document.forms[0][listaOrigen][document.forms[0][listaOrigen].selectedIndex].value;
			textListaOrigen = document.forms[0][listaOrigen][document.forms[0][listaOrigen].selectedIndex].text;	
			// afegir a listaDestino
			if (!entradaDuplicada(valueListaOrigen,listaDestino))			
				document.forms[0][listaDestino].options[document.forms[0][listaDestino].length] = new Option(textListaOrigen,valueListaOrigen);
			// eliminar de listaOrigen			
			if(eliminaOrigen) document.forms[0][listaOrigen].options[document.forms[0][listaOrigen].selectedIndex] = null;		
		}
	}
}

function eliminaElemento(lista)
{
	//alert(document.forms[0][lista].selectedIndex);
	//alert(document.forms[0][lista][document.forms[0][lista].selectedIndex].value);
	//alert(document.forms[0][lista][document.forms[0][lista].selectedIndex].text);
	var i;
	if (document.forms[0][lista].multiple)
	{
		for (i = document.forms[0][lista].length-1; i >= 0; i--)
		{
			if (document.forms[0][lista][i].selected) 
			{
				document.forms[0][lista].options[i] = null;				
			}
		}			
	}
	else
	{				
		if (document.forms[0][lista].selectedIndex >= 0) // -1 si no hay seleccionados
		{
			document.forms[0][lista].options[document.forms[0][lista].selectedIndex] = null;
		}
	}	
}

function seleccionaElementos(lista)
{
	//alert(document.forms[0][lista].length);
	var i;
	if (document.forms[0][lista])
	{
		for (i = 0; i < document.forms[0][lista].length; i++)	
		{
			document.forms[0][lista][i].selected = true;
			//alert(document.forms[0][lista][i].selected);
		}
	}	
}

function imgover(imgname){
    imgname.src = "imagenes/arrow.gif";
}

function imgout(imgname){
    imgname.src = "imagenes/blank.gif";
}


/*
   M‚todo que permite abrir una ventana centrada tanto de forma horizontal como verticalmente.
   Par metros:
     + ancho - define la anchura de la ventana.
     + alto  - define la altura  de la ventana.
       -  Si ancho/alto es mayor que 0 se entiende que se debe ser centrada.
       -  Si no debe ir centrada se envia 0 y se especifica el ancho como propiedad dentro de la cadena.
     + propiedades - cadena en la que se especifican todos los par metros que se desean ( menu, scrollbars, resizable, ...)
*/
function centrarVentana(url, titulo, ancho, alto, propiedades, cogeFoco){
       if ( alto > window.screen.height)
          alto = window.screen.height;
//         vertical = window.screen.height /2;

       var horizontal = ( window.screen.width  - parseInt(ancho) ) / 2 ;
       var vertical   = ( window.screen.height - parseInt(alto ) ) / 2 ;

       url = url.replace(/"/g, '\\"');
       cadena = "window.open( \"" + url + "\", \"" + titulo + "\", \"";

       if ( parseInt( ancho ) > 0 )
          cadena += "width=" + ancho + ",screenX=" + horizontal + ",left=" + horizontal;

       if ( parseInt( alto  ) > 0 )
          cadena += ",height=" + alto + ",screenY=" + vertical + ",top=" + vertical;

       if ( propiedades != "" )
          cadena += "," + propiedades;

       cadena +=  "\" )";

       var nuevaVentana = eval ( cadena );
       if ( cogeFoco )
          nuevaVentana.focus();

        return nuevaVentana;
}

function abreVentanaGrande(fichero,nombre){
        if (nombre==null) nombre='ventana';
        var carac="left=0,top=0,width=" + (screen.availWidth-15) + ",height="+ (screen.availHeight-35) + ",resizable=yes, scrollbars=yes";
        //alert(carac)
        var ventana=window.open(fichero,nombre,carac);
        ventana.focus();
}

function abreCalen(campo){
        //var ven=centrarVentana('','calen',170,170,'scrollbars=no',1);
        // Con menos de 500 en remoto falla (en local funciona incluso con 100)!!!
        var ven=window.open('','calen','width=170,height=170,left=600,top=100,scrollbars=no',1);
        ven.document.write('<HTML><HEAD><TITLE>Calendario</TITLE><LINK TYPE=\"text/css\" HREF=\"estilo.css\" REL=\"stylesheet\"><script type=\"text/javascript\" src=\"calendario.js\"><\/script></HEAD><BODY><br /><div id=\"cal\"></div><script>setTimeout(\"ponCal(\''+ campo +'\')\",500);</scr'+'ipt></BODY></HTML>');
        ven.focus();
}

function nombreValido(id){
        var nombre=document.forms[0][id].value;
        var pos=nombre.lastIndexOf("\\");
        nombre=nombre.substring(pos+1);
        //alert(nombre);
        var codigoInicial = nombre.charCodeAt(0);
        //alert (codigoInicial);
        for (i=0; i<nombre.length; i++){
                var codigo = nombre.charCodeAt(i);
                if (!( (codigo>=48 && codigo<=57) || (codigo>=65 && codigo<=90)
                  || (codigo>=97 && codigo<=122) || codigo==45 || codigo==46 || codigo==95 || codigo==32)){  // - . _ espacio
                  alert("El caracter '"+ nombre.charAt(i) +"' no es un caracter válido.\n Los caracteres válidos son 0..9, a..z, A..Z y los caracteres - _ y espacio");
                  document.forms[0][id].focus();
                  return false;
                }
        }
        return true;
}

function loginValido(id){
        login=document.forms[0][id].value;
        var codigoInicial = login.charCodeAt(0);
        //alert (codigoInicial);
        if (!( (codigoInicial>=65 && codigoInicial<=90) || (codigoInicial>=97 && codigoInicial<=122) )){
            alert("El LOGIN debe empezar por un caracter comprendido entre a..z o A..Z y no puede contener espacios en blanco.");
            document.forms[0][id].focus();
            return false;
        }
        for (i=0; i<login.length; i++){
                var codigo = login.charCodeAt(i);
                if (!( (codigo>=48 && codigo<=57) || (codigo>=65 && codigo<=90)
                  || (codigo>=97 && codigo<=122) || codigo==45 || codigo==46 || codigo==95)){  // - . Y _
                  alert("El caracter '"+ login.charAt(i) +"' no es un caracter válido.\n Los caracteres válidos son 0..9, a..z, A..Z y los caracteres - y _");
                  document.forms[0][id].focus();
                  return false;
                }
        }
        return true;
}

function loginValido1(id){
  var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÀÈÒ" + "abcdefghijklmnñopqrstuvwxyzáéíóúàèò";
  var checkFirst = document.forms[0][id].value.charAt(0);
  var valid=false;
  for (j = 0; j < checkOK.length; j++)
    if (checkFirst == checkOK.charAt(j)){
        valid=true;
        break;
    }
  if (!valid) {
        alert("El LOGIN debe empezar por un caracter comprendido entre a..z o A..Z y no puede contener espacios en blanco.");
        document.forms[0][id].focus();
        return (false);
  }


  var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÀÈÒ" + "abcdefghijklmnñopqrstuvwxyzáéíóúàèò"+
        "0123456789"+"-"+"_";
  var allValid = true;
  var checkStr = document.forms[0][id].value;

  for (i = 0; i < checkStr.length; i++) {
    ch = checkStr.charAt(i);
    for (j = 0; j < checkOK.length; j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length) {
        alert('invalido');
      allValid = false;
      break;
    }
  }

  if (!(allValid)){
        alert("El caracter '"+ checkStr.charAt(i) +"' no es un caracter válido.\n Los caracteres válidos son 0..9, a..z, A..Z y los caracteres - y _");
        document.forms[0][id].focus();
        return (false);
  }
  return (true);
}

function cookies(){
        if (navigator.cookieEnabled) return true;
}

function openMenu(event, id) {
  var el, x, y;

  el = document.getElementById(id);
  if (window.event) {
    x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
  }else {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  x -= 8; y -= 8;
  el.style.left = x + "px";
  el.style.top  = y + "px";
  el.style.visibility = "visible";
}


function closeMenu(event) {
  var current, related;

  if (window.event) {
    current = this;
    related = window.event.toElement;
  }else{
    current = event.currentTarget;
    related = event.relatedTarget;
  }

  //alert(current != related); siempre es cierto al cambiar de elemento de menu
  if (current != related && !contains(current, related)){
    current.style.visibility = "hidden";
  }
}


function contains(a, b) {
  // Return true if node a contains node b.

  if(b==null) return false;
  while (b.parentNode)
    if ((b = b.parentNode) == a){
      return true;
    }
  return false;
}


// CRONO: usada en onload de fra_sup
function actReloj()
{
var hhmmss=new Date()
var horas=hhmmss.getHours()
var minutos=hhmmss.getMinutes()
var segundos=hhmmss.getSeconds()

//Convertimos los números a dos dígitos, o sea, 6 -> 06
horas = (horas<=9)?("0"+horas):horas;
minutos = (minutos<=9)?("0"+minutos):minutos;
segundos=(segundos<=9)? ("0"+segundos):segundos;

/* Aquí construimos la cadena de texto HTML con la hora, y el tipo de letra que se escribe
en la capa del reloj. */

var hora=horas+":"+minutos+":" +segundos;
if ((document.all) || (document.getElementById))
{
        document.getElementById('reloj').innerHTML=hora;
}
else if (document.layers)
{
        document.layers.reloj.document.write(hora);
        document.layers.reloj.document.close();
}
//ejecuta la función cada segundo (1000 miliseg)
setTimeout("actReloj()",1000);
}


// usada en mensajero, asistencia
function quitaMarca(campo,nombre){
        var pos=document.form1[campo].value.indexOf(nombre);
        if (pos!=-1){ // existe
                var alumnos=document.form1[campo].value;
                principio=alumnos.substring(0,pos);
                fi=nombre.length;
                fin=alumnos.substring(pos+fi+1);
                alumnos= principio + fin;
                //alert(alumnos);
                document.form1[campo].value=alumnos;
        }
        //alert(document.form1["alumnos"].value);
}

/* PEQUEÑA CONTRADICCION:  ponMarca Y ponMarcas DEBERIAN USAR LAS DOS O NINGUNA EL CAMPO MARCAS */
// usada en mensajero, asistencia
function ponMarca(campo,nombre){
        //alert(campo);
        //alert(nombre);
        var pos=document.form1[campo].value.indexOf(nombre);
        if (pos==-1){ // no existe
                document.form1[campo].value = document.form1[campo].value + nombre + ",";
        }
        //alert(document.form1["alumnos"].value);
}

// usada en mensajero, asistencia
function ponMarcas(obj,id){
 var marca="";
 var pos=0;
 var marcas;

 if (id!=null) comienzo=id;
 else comienzo='';
 if (obj.checked){
   // PONER
   for(i=0; i< document.forms[0].elements.length; i++){
        if (document.forms[0].elements[i].type=="checkbox" && document.forms[0].elements[i].name.substring(0,comienzo.length)==comienzo){
                document.forms[0].elements[i].checked=true;
                marca=document.forms[0].elements[i].value;
                pos=document.forms[0]["marcas"].value.indexOf(marca);
                if (pos==-1){ // no existe
                        document.forms[0]["marcas"].value = document.forms[0]["marcas"].value + marca + ",";
                }
                //alert(document.form1["alumnos"].value);
        }
   }
 }else{
   // QUITAR
   for(i=0; i<document.forms[0].elements.length; i++){
     if (document.forms[0].elements[i].type=="checkbox" && document.forms[0].elements[i].name.substring(0,comienzo.length)==comienzo){
        document.forms[0].elements[i].checked=false;
        marca=document.forms[0].elements[i].value;
        //alert(alum);
        pos=document.forms[0]["marcas"].value.indexOf(marca);
        //alert(pos);
        if (pos!=-1){ // existe
            marcas=document.forms[0]["marcas"].value;
            principio=marcas.substring(0,pos);
            fi=marca.length;
            fin=marcas.substring(pos+fi+1);
            marcas= principio + fin;
            //alert(alumnos);
            document.forms[0]["marcas"].value=marcas;
                //alert(document.form1["alumnos"].value);
        }
      }
   }
 }
 //alert(document.form1["alumnos"].value);
}



/* ROLLOVER */

function cambiaImagen(obj,imgOn,imgOff,sino){
        if (sino){
                obj.src=imgOn;
        }else{
                obj.src=imgOff;
        }
}


/* FORMULARIOS */
function cambiaBoton(obj,sino){
        if (sino){
                obj.style.borderColor= 'white';
                obj.style.backgroundColor= '#000066';
                obj.style.color= 'white';
        }else{
                obj.style.borderColor= '#000066';
                obj.style.backgroundColor= '';
                obj.style.color= '';
        }
}


// en formularios con COMBO O LISTA, comprueba que haya algun elemento elegido
function opcion_elegida(id){
        if (document.form1[id].type=="select-one"){ //combo
                if (document.form1[id].selectedIndex==0){
                        alert("Debe seleccionar una opción");
                        document.form1[id].focus();
                        return false;
                }
        }else if (document.form1[id].type=="select-multiple"){ //lista de instructores
                for(i=0; i<document.form1[id].length;i++){
                  if (document.form1[id][i].selected==true){
                        return;
                  }
                }
                 alert("Debe elegir un instructor");
                document.form1[id].focus();
                return false;
        }
        return (true);
}

//PONE FOCO EN FORMULARIOS
function ponFoco(id){
        // si sólo pongo select el orden de tabulacion no funciona
        document.forms[0][id].focus();
        if (document.forms[0][id].type=="text") document.forms[0][id].select();
}


// CONFIRMA LA ELIMINACIÓN DE UN REGISTRO
function confirmar(id){
        var resp=confirm("¿Está seguro que desea eliminar el registro '" + id +"' ?");
        if (resp==false) return false;
        else return true;
}

// VERIFICA QUE HAYA DATOS
function verificaCampo(){
        //alert(arguments[0]);alert(arguments[1]);
        var hay_pass=false;
        for (i=0; i<arguments.length; i++){
                if (document.form1[arguments[i]].value==""){
                        alert("Este dato es obligatorio");
                        document.form1[arguments[i]].focus();
                        return false;
                }
                if (arguments[i]=="password") hay_pass=true;
        }
        if (hay_pass) return validaPassword();
        else return (true);
}

function verificaCombo(){
        for (i=0; i<arguments.length; i++){
                if (document.form1[arguments[i]].value==""){
                        alert("Este dato es obligatorio");
                        document.form1[arguments[i]].focus();
                        return false;
                }
        }
        return true;
        //return (document.forms[0]['provincia'].selectedIndex>=1) && (document.forms[0]['fn_dia'].selectedIndex>=0) && (document.forms[0]['fn_mes'].selectedIndex>=0)
}

function verificaFichero(fich,login){
        fichero=document.forms[0][fich].value.toLowerCase();
        if (fichero=='') return true;

        //if (fichero.indexOf(login)!=-1) return true;
        pos_barra=fichero.lastIndexOf('\\');
        if (pos_barra==-1) pos_barra=fichero.lastIndexOf('/');
        pos_punto=fichero.lastIndexOf('.');
        nombre=fichero.substring(pos_barra+1,pos_punto);
        if (nombre==login) return true;
        else{
                alert("El nombre del fichero debe ser igual a " + login);
                document.form1[fich].focus();
                return false;
        }
}

//VERIFICA PASSWORDS
function validaPassword(){
        if (document.form1['password'].value!=document.form1['password2'].value){
                alert("Los passwords no coinciden");
                document.form1['password'].focus();
                return false;
        }
        return (true);
}

//VERIFICA CORREO
function verificaCorreo(mail){
        var correcto=false;
        var correo;
        if (mail==null)
                correo=document.form1['correo'].value;
        else
                correo=document.form1[mail].value;
        if (correo=="") return (true);
        var arroba=correo.indexOf('@');
        if (arroba!=-1){
                var punto=correo.indexOf('.',arroba+1);
                if (punto!=-1){
                        correcto=true;
                }
        }
        if (!correcto){
                alert('Dirección de correo incorrecta');
                if (mail==null)
                        document.form1['correo'].focus();
                else
                        document.form1[mail].focus();
                return false;
        }else{
                return true;
        }
}

// se usa en realizar_exam para no dejar que ponga más preguntas por pàgina que el total
function verificaLongitud(id,max){
        if (document.form1[id].value>max){
                alert('Máximo ' + max + ' preguntas');
                document.form1[id].focus();
                return false;
        }else if (document.form1[id].value<=0){
                alert('Número de preguntas incorrecto');
                document.form1[id].focus();
                return false;
        }
        return (true);
}

// le paso this, que el objeto fila que quiero iluminar
function ponColorFila(fila,onoff){
        // anteriores: rgb(132,158,181), rgb(204,153,153), #FF9900
        if (onoff=="on") 
                fila.style.backgroundColor="#ff9900";
        else
                fila.style.backgroundColor="";
}

// le paso this, que es el objeto que quiero iluminar
// SI SE PONE EN ONCLICK solo funciona con botón izquierdo , en ONMOUSEDOWN funciona con los dos (GRAELLA)
// USADO EN textbox de formularios
function ponColorObjeto(obj,color){
        // rgb(132,158,181);
        //alert(obj.style.backgroundColor);
        if (obj.style.backgroundColor=="") {
                if (color==void 0)
                        obj.style.backgroundColor="#FFFF99";
                else
                        obj.style.backgroundColor=color;
        }else{
                obj.style.backgroundColor="";
        }
}


// controla que sólo entre numéricos positivos
// si uso final peta en Netscape pq es palabra reservada??
function pulsada(e,inicial,fin,validos) {
          if(document.all)
          {
              codigoTecla = event.keyCode //e.keycode també
          }
          else if(document.layers)
          {
              codigoTecla = e.which
          }
          else if(document.getElementById)
          {
              codigoTecla = (window.Event) ? e.which : e.keyCode;
          }


          //alert(codigoTecla);
          // 8 = backspace, 0 = cursores; esto es para Netscape sólo 
          if (codigoTecla==8 || codigoTecla==0) return;

          if (validos!=null){
                var v_validos =validos.split(' ');
                for(var j=0; j<v_validos.length; j++){
                        if (v_validos[j]==String.fromCharCode(codigoTecla)) return;
                }        
          }

          codigoInicial = inicial.charCodeAt(0);
          if (fin==null) // if (!fin) tambien vale
                codigoFinal = 57;
          else                                          
                codigoFinal = fin.charCodeAt(0);


          if (codigoTecla<codigoInicial || codigoTecla>codigoFinal) 
          {
              if(document.all)
                  event.returnValue = false;
              else
                  return false;
          }
}

// se usa en mant_exam.php 
function alClicarHabilitaText(obj){
        if (obj.value==1) {
                document.getElementById('peso').style.visibility='visible';
                document.forms[0]['peso'].disabled= false;
                document.forms[0]['peso'].focus();
                document.forms[0]['peso'].select();
        }else{
                document.forms[0]['peso'].disabled= true;                
                document.getElementById('peso').style.visibility='hidden';
        }
        /* cuando era un checkbox
        if (!obj.checked){
                document.forms[0]['peso'].disabled= true;
        }else{
                document.forms[0]['peso'].disabled= false;
                document.forms[0]['peso'].focus();
                document.forms[0]['peso'].select();
        }
        */
}

// se usa en mant_exam.php 
function alClicarHabilitaFila(obj){
        if (obj.value==0) {
                document.getElementById('manual').style.display='';
                document.getElementById('automatica').style.display='none';
        }else{
                document.getElementById('manual').style.display='none';
                document.getElementById('automatica').style.display='';
        }
}


// se usa en mant_exam.php 
function alClicarHabilitaTipoAuto(obj){
        if (obj.value==0) {
                document.getElementById('inicio').style.display='inline';
                document.getElementById('periodo').style.display='none';
                document.getElementById('tituloauto').innerHTML='Inicio de activación:';
        }else if (obj.value==1) {
                document.getElementById('inicio').style.display='inline';
                document.getElementById('periodo').style.display='inline';
                document.getElementById('tituloauto').innerHTML='Periodo de activación:';
        }else if (obj.value==2 || obj.value=='null'){
                document.getElementById('inicio').style.display='none';
                document.getElementById('periodo').style.display='none';
                document.getElementById('tituloauto').innerHTML='';
        }
}


// se usa en resultados_in.php para FILTRAR aprobados y suspendidos
function escondeFilas(){
        var indice=document.forms[0]['esconde'].selectedIndex;
        /* al ser BARRA un TR no se puede hacer
        if (obj[i].className.indexOf('aprobado')==-1){
                obj[i].style.display="none";
        */

        obj=document.getElementsByTagName("TR");
        for (var i=0; i<obj.length; i++){
                // si pongo block, en Netscpae NO funciona!! (pinta mal las filas)
                obj[i].style.display="";
        }

        if (indice==0){
                return;
        }else if (indice==1){ //aprobados
                obj=document.getElementsByTagName("TR");
                for (var i=0; i<obj.length; i++){
                        if (obj[i].className.indexOf('suspendido')!=-1){
                                obj[i].style.display="none";
                        }
                }
        }else if (indice==2){ //susp
                obj=document.getElementsByTagName("TR");
                for (var i=0; i<obj.length; i++){
                        if (obj[i].className.indexOf('aprobado')!=-1){
                                obj[i].style.display="none";
                        }
                }
        }
}

// se usa en resultados.php para FILTRAR correctas e incorrectas
function filtra(){
        var obj;
        var contador=0;
        var indice=document.form1.combo.selectedIndex;

        // DEBERÉ CAMBIARLO POR DIV cuando haga salto de linea (DIV:after {content: "\A";})
        obj=document.getElementsByTagName("P");
        for (var i=0; i<obj.length;i++){
                obj[i].style.display="block";
        }
        if (indice==0){ //todas
                contador=obj.length;

        }else if (indice==1){ //correctas
                obj=document.getElementsByTagName("P");
                for (var i=0; i<obj.length; i++){
                        // es espacio es fundamental: ' correcta'
                        if ( obj[i].className.indexOf(' correcta')!=-1 )
                                contador++;                        
                        else
                                obj[i].style.display="none";
                }

        }else if (indice==2){  //incorrectas
                obj=document.getElementsByTagName("P");
                for (var i=0; i<obj.length; i++){
                        if ( obj[i].className.indexOf('incorrecta')!=-1 )
                                contador++;                        
                        else 
                                obj[i].style.display="none";
                }

        }else{ // no contestadas
                obj=document.getElementsByTagName("P");
                for (var i=0; i<obj.length; i++){
                        if ( obj[i].className.indexOf('nocontestada')!=-1 )
                                contador++;                        
                        else 
                                obj[i].style.display="none";
                }
        
        }
        document.getElementById('contador').innerHTML=contador;
}

// se usa en resultados.php para ORDENAR segun orden realización o según real
function ordena(criterio){
        var si_esta_alumno=false;
        for(i=0; i< document.form1.elements.length; i++)
                if (document.form1.elements[i].name=="alumno"){
                        si_esta_alumno=true;
                        break;
                }

        if (si_esta_alumno)
          document.form1.action="resultados.php?accion=1&examen=" + document.form1.examen.value
          + "&curso="+document.form1.curso.value + "&clase="+document.form1.clase.value
          + "&id_intento="+document.form1['id_intento'].value+"&alumno="+document.form1['alumno'].value;
        else
          document.form1.action="resultados.php?accion=1&examen="+document.form1.examen.value
          + "&curso="+document.form1.curso.value + "&clase="+document.form1.clase.value
          +"&id_intento="+document.form1['id_intento'].value;

        var si_esta_exped=false;
        for(i=0; i< document.form1.elements.length; i++)
                if (document.form1.elements[i].name=="expediente"){
                        si_esta_exped=true;
                        break;
                }
        if (si_esta_exped) document.form1.action+="&expediente=1";

        var si_esta_estad=false;
        for(i=0; i< document.form1.elements.length; i++)
                if (document.form1.elements[i].name=="estadisticas"){
                        si_esta_estad=true;
                        break;
                }
        if (si_esta_estad) document.form1.action+="&estadisticas=1";

        if (criterio!=null) document.form1.action+=criterio;
        document.form1.submit();
}

// PONE LA FECHA ACTUAL A UN CAMPO A PARTIR DE SU NAME
function ponFecha(id){
        var fecha=new Date();
        //var f = fecha.getFullYear() +"-"+ fecha.getMonth() +"-" +fecha.getDate();
        var dia=String(fecha.getDate());
        var mes=String(fecha.getMonth()+1);
        if (dia.length==1) dia="0" + dia;
        if (mes.length==1) mes="0".concat(mes);
        var f=dia + "/" + mes + "/" + fecha.getFullYear();
        document.form1[id].value=f;
}

// PONE LA HORA ACTUAL A UN CAMPO A PARTIR DE SU NAME
function ponHora(id){
        var fecha=new Date();
        var hora=String(fecha.getHours());
        var min=String(fecha.getMinutes());
        var seg=String(fecha.getSeconds());
        if (hora.length==1) hora="0" + hora;
        if (min.length==1) min="0".concat(min);
        if (seg.length==1) seg="0".concat(seg);
        var h=hora + ":" + min + ":" + seg;
        document.form1[id].value=h;
}

function validaHora(obj){
        var hora=obj.value;
        var valida=true;

        if (hora=="" || hora=="00:00:00") return;

        if (hora.length>5){ // sino es que es format hh:mm només
          fin=5;
          if (hora.substr(2,1) != ':' || hora.substr(5,1) != ':'){
                valida=false;
          }
        }else{
          fin=3;
          if (hora.substr(2,1) != ':'){
                valida=false;
          }
        }

        // per si es deixa entrar lletres,etc...
        // mira si hora es correcta
        horanum = hora.substr(0,2);
        horanum += hora.substr(3,2);
        horanum += hora.substr(6,2);

        var digit;
        for (i=0; i<=fin; i++)
        {
                digit = horanum.substr(i,1);
                if (digit < '0' || digit > '9')
                {
                        valida=false;
                }
        }

        // mira si hora es correcta
        hora_num = hora.substr(0,2);
        min_num  = hora.substr(3,2);
        if (fin==5) seg_num  = hora.substr(6,2);
        
        //alert(hora_num);
        if (hora_num > '24'){
                valida=false;
        }        
        if (min_num > '59'){
                valida=false;
        }
        if (fin==5) 
         if (seg_num > '59'){
                valida=false;
         }

        if (!valida) {
                alert("Hora incorrecta\nFormato: hh:mm:ss");
                obj.focus();
                return false;
        }
        return true;
}

function validaFecha(obj)
{
        /* "00/00/0000" ya que si no se pusiera fecha, al modificar cursos (hay dos fechas seguidas) entraria en un bucle                 infinito */
        if (obj.value=="" || obj.value=="00/00/0000") return;
        if (obj.value.substr(2,1) != '/'){
                if (obj.value.substr(1,1) == '/'){
                     obj.value="0"+obj.value;
                }
        }
        //alert(obj.value);
        if (obj.value.substr(5,1) != '/'){
                if (obj.value.substr(4,1) == '/'){
                     obj.value=obj.value.substr(0,3)+"0"+obj.value.substr(3);
                }
        }
        //alert(obj.value);

        if (!( (formatData(obj.value)) && (validaData(obj.value)) )) {
                alert("Fecha incorrecta\nFormato: dd/mm/aaaa" );
                obj.focus();
                return false;
        }
        return true;
}

//El format de les dates ha da ser dd/mm/aaaa
function formatData(fData)
{
        if (fData.substr(2,1) != '/' || fData.substr(5,1) != '/'){
                return (false)
        }

        var data_num;
        data_num = fData.substr(0,2);
        data_num += fData.substr(3,2);
        data_num += fData.substr(6,4);

        // per si es deixa entrar lletres,etc...
        var digit;
        for (i=0; i<=7; i++)
        {
                digit = data_num.substr(i,1);
                if (digit < '0' || digit > '9')
                {
                        return(false);
                }
        }
        return(true);
}

//La data informada, ha de ser una data vàlida
function validaData(vData)
{
        var vDia = vData.substr(0,2);
        var vslash1 = vData.substr(2,1);
        var vMes = vData.substr(3,2);
        var vslash2 = vData.substr(5,1);
        var vAny = vData.substr(6,4);
        
        var DiaMes = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 

        //Actualitzem el mes de Febrer pels anys de traspàs ("bisiesto")
        if (((vAny % 4 == 0) && (vAny % 100 != 0)) || (vAny % 400 == 0))
                DiaMes[1] = 29;
                
        if (vMes < '01' || vMes > '12')
                return (false);
                
        if (vDia < '01' || vDia > DiaMes[vMes-1])
                return (false);
                
        return(true)
}

//Canvia el format de la data a aaaammdd per poder comparar (i enviar a PHP)
function canviFormat(cData,separador)
{
        var sep='';
        if (separador==null) sep="-";
        else sep=separador;

        var cDia = cData.substr(0,2);
        var cMes = cData.substr(3,2);
        var cAny = cData.substr(6,4);
        var cDataNova = cAny + sep + cMes + sep + cDia;
        return (cDataNova)
}


//Canvia el format de la data desde aaaammdd a dd/mm/aaaa per presentacions
function canviFormatAEspanyol(cData)
{
        var cAny = cData.substr(0,4);
        var cMes = cData.substr(5,2);
        var cDia = cData.substr(8,2);
        var cDataNova = cDia + "/" + cMes + "/" + cAny;
        return (cDataNova)
}


//NO SIRVE PQ EL NAVEGADOR ORDENA SEGÚN TIENE LOS ELEMENTOS EN LA PÁGINA Y NO 
// SEGÚN LOS VAYA PONIENDO VISIBLES (DESPUÉS DE OCULTARLOS) => PAGINA .PHP
/*
function ordena(){
        var obj;
        var vectorPreg=new Array();
        var indice=document.form1.combo2.selectedIndex;
        obj=document.getElementsByTagName("P");
        if (indice==0){
                for (var i=0; i<obj.length;i++){        
                        vectorPreg[vectorPreg.length]=obj[i].getAttribute('alum');
                }
        }else{
                for (var i=0; i<obj.length;i++){        
                        vectorPreg[vectorPreg.length]=obj[i].getAttribute('id');
                }
        }
        // oculta todas
        for (var i=0; i<obj.length;i++){
                obj[i].style.display="none";
        }
        //vectorPreg.sort(cmp);
        alert(vectorPreg);
        for (var i=0; i<vectorPreg.length;i++){
                obj[vectorPreg[i]-1].style.display="block";
                alert(vectorPreg[i]-1);
        }
}
*/

// NO LA USO: IDA DE OLLA
/*
function convertirAlinks(){
        var pregLinks="";
        var vector=document.getElementById('preguntas').innerHTML.split(" ");
        for(var i=0; i< vector.length; i++) {
                pregLinks=pregLinks+ "<A HREF=resultados.php?id=" + vector[i] +">" +vector[i]+"</A>" +" ";
        }
        document.getElementById('preguntas').innerHTML=pregLinks;
}
*/

function cmp(a,b) { 
        return (a-b);
}


    /** 
    * definimos las variables globales necesarias
    * var n >> marcapasos del bucle
    * var contenido >> string que va a almacenar en cada momento la variante del mensaje a pintar en la capa
    * var mensaje >> mensaje a mostrar en la capa
    */
    var n=-1;
    var contenido="";
    var mensaje="EXAMENES ONLINE";

    /**
    * funcion principal
    */
    function escribe()
    {
        /**
         * para Internet Explorer
         */
         if(document.all)
         {
             /**
             * si el marcapasos es menor que la longitud del mensaje >> continuamos el bucle, aumentando 1 unidad n
             * si el marcapasos iguala la longitud del mensaje >> lo inicializamos
             */
             if(n<mensaje.length)
                 n+=1;
             else
                n=-1;
            
            /**
            * iniciamos el bucle
            * asignamos a la letra de igual posicion que el marcapasos en la cadena del mensaje el color verde
            * y a las otras el color rojo, y almacenamos todo como un string en la variable contenido
            */
            for(m=0;m<=mensaje.length;m++)
            {
                if(m!=n)
                {
                    contenido+=('<span class="texto">'+mensaje.charAt(m)+'</span>');
                }
                else
                {
                     contenido+=('<span class="letra">'+mensaje.charAt(n)+'</span>');
                }
            }
            
            /**
            * una vez creada la cadena completa de este ciclo del bucle, la escribimos en la capa, usando la sintaxis 
            * propia de I. Explorer
            * luego inializamos de nuevo la variable contenido, para empezar desde cero el siguiente bucle
            */
            document.all['contenedor'].innerHTML=contenido;
            contenido="";
        }
        
        
        /**
        * para Nestcape Navigator 6x
        * este si permite escribir directamente en la capa, al igual que I. Explorer.
        * para acceder a la capa usamos el objeto getElementById('nombre capa')
        */
        else if(document.getElementById)
         {
             if(n<mensaje.length)
                 n+=1;
             else
                n=-1;
            for(m=0;m<=mensaje.length;m++)
            {
                if(m!=n)
                {
                    contenido+=('<span class="texto">'+mensaje.charAt(m)+'</span>');        
                }
                else
                {
                     contenido+=('<span class="letra">'+mensaje.charAt(n)+'</span>');
                }
            }
            document.getElementById('contenedor').innerHTML=contenido;
            contenido="";                          
        }

        /**
        * para Nestcape Navigator 4x
        */
        else  if(document.layers)
        {
            if(n<=mensaje.length)
                n+=1;
            else
                n=-1;
            
            /**
            * este navegador no permite escribir directamente en una capa, pues considera cada capa como 
            * un documento propio. Hay que abrir el documento de la capa, escribir en el y cerralo luego
            */
            document.layers['contenedor'].document.open();
            
            for (m=0;m<mensaje.length;m++)
            {
                if(m!=n)
                {
                    document.layers['contenedor'].document.write('<span class="texto">'+mensaje.charAt(m)+'</span>');
                }
                else
                {
                     document.layers['contenedor'].document.write('<span class="letra">'+mensaje.charAt(n)+'</span>');
                }            
            }
            document.layers['contenedor'].document.close();
        }
        
        /**
        * llamamos de nuevo a la funcion cada 300 milisegundos
        */
        setTimeout("escribe()",600);
}

// para IE 5.0
function creaCriterio2(){
        var index;
        var criterio='';
        var criteriotexto='';

        // nombre like '%l'abat%' => fallo SQL => no debo poner ' sino \'
        for (j=1; j<6; j++){
          //alert(document.forms[0]['criterio'+j].disabled);
          if (document.forms[0]['criterio'+j].disabled==false){
                document.forms[0]['criterio'+j].value = document.forms[0]['criterio'+j].value.replace(/'/g, "\\'");

                if (document.getElementById('tipo'+j).value=='date') 
                document.forms[0]['criterio'+j].value=canviFormat(document.forms[0]['criterio'+j].value);
                else if(document.getElementById('tipo'+j).value=='timestamp') 
                document.forms[0]['criterio'+j].value=canviFormat(document.forms[0]['criterio'+j].value,'');

                if (document.forms[0]['operador'+j].value=="like")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '%"+                                         document.forms[0]['criterio'+j].value + "%'";
                else if(document.forms[0]['operador'+j].value=="not like")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '%25"+ crit + "%25'";
                else if(document.forms[0]['operador'+j].value=="is null")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value; 
                else if(document.forms[0]['operador'+j].value=="is not null")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value; 
                else
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '"+                                         document.forms[0]['criterio'+j].value + "'";
                
                index=document.forms[0]['operador'+j].selectedIndex;
                criteriotexto+=" "+document.forms[0]['campo'+j].value+ " " 
                        + document.forms[0]['operador'+j][index].text+" '"+document.forms[0]['criterio'+j].value+"'";
                if (document.forms[0]['andor'+(j)].value!=''){
                        criterio+=document.forms[0]['andor'+(j)].value;
                        index=document.forms[0]['andor'+(j)].selectedIndex;
                        criteriotexto+=" "+document.forms[0]['andor'+(j)][index].text+" ";
                }
          }
        }
        // debo sustituir & por %26 sino no llega el campo entero a PHP!!!
        // linea = linea.replace(/palabra/g, "frase");
        criterio = criterio.replace(/&/g, "%26");
        criteriotexto = criteriotexto.replace(/&/g, "%26");
        //alert(criterio);
        document.forms[0].criterio.value="("+criterio+")";
        document.forms[0].criteriotexto.value=criteriotexto;
        //alert(document.forms[0].criterio.value);
        //alert(document.forms[0].criteriotexto.value);
        setTimeout("delay()",100);
}

function ponClase(combo){
        j=combo.name.substr(5);
        var index=combo.selectedIndex;
        document.forms[0]['tipo'+j].value=combo.options[index].className;
}

function creaCriterio(){
        var index;
        var criterio='';
        var criteriotexto='';

        // 1) nombre like '%l'abat%' => fallo SQL => no debo poner ' sino \'

        /* COMO SE ENVIA EL CRITERIO EN LA URL(construido por código) y no a través de campos de formulario (caso en
        el que el navegador hace codificaión URL) yo debo hacer la codificacion: LO IDEAL SERIA UNA FUNCION EN
        JAVASCRIPT QUE HAGA LA CODIFICACIÓN URL del criterio */
        // 2) % (del like) es un caracter reservado en una URL (como &) => código hexa => %25 ya que sino al
        // buscar dai p.e al PHP llega %dai% y piensa que ha estado codificado por el navegador =>
        // sustituye %da por Ú !!
        // 3) replace(/%/g,"\\%") hace que al buscar % se sutituya por \% que es lo que necesita MYSQL
        // en 2) peta si busco contiene %aa p.e (PHP lo decodifica como ª) => crit=crit.replace(/%/g,"%25"); previo
        // 4)debo sustituir & por %26 sino no llega el campo entero a PHP!!!
        // linea = linea.replace(/palabra/g, "frase");

        for (j=1; j<6; j++){
          //alert(document.forms[0]['criterio'+j].disabled);
          if (document.forms[0]['criterio'+j].disabled==false){
                crit=document.forms[0]['criterio'+j].value;

                crit = crit.replace(/'/g, "\\'");
                crit = crit.replace(/%/g,"%25");
                crit = crit.replace(/%/g,"\\%");
                crit = crit.replace(/&/g, "%26");
                crit = crit.replace(/\+/g, "%2B");
                //crit=document.forms[0]['criterio'+j].value.replace(/\/g,"\\\");  peta

                // CON NETSCAPE PETA EN JAVASCRIPT Y FINALIZA FUNCION!!
                //if (document.getElementById('tipo'+j).value=='date') crit=canviFormat(crit);
                //else if(document.getElementById('tipo'+j).value=='timestamp') crit=canviFormat(crit,'');

                //alert(crit);
                if (document.forms[0]['tipo'+j].value=='date'){
                        if (validaFecha(document.forms[0]['criterio'+j])==false){
                                return false;
                        }else{
                                crit=canviFormat(crit);
                        }
                }else if(document.forms[0]['tipo'+j].value=='timestamp'){
                        if (validaFecha(document.forms[0]['criterio'+j])==false){
                                return false;
                        }else{
                                crit=canviFormat(crit,'');
                        }
                }else if(document.forms[0]['tipo'+j].value=='time'){
                        if (validaHora(document.forms[0]['criterio'+j])==false){
                                return false;
                        }
                }

                if (document.forms[0]['operador'+j].value=="like")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '%25"+ crit + "%25'";
                else if(document.forms[0]['operador'+j].value=="not like")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '%25"+ crit + "%25'";
                else if(document.forms[0]['operador'+j].value=="is null")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value; 
                else if(document.forms[0]['operador'+j].value=="is not null")
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value; 
                else
                criterio+=document.forms[0]['campo'+j].value+ " " + document.forms[0]['operador'+j].value+ " '"+ crit + "'";
                
                index=document.forms[0]['operador'+j].selectedIndex;
                criteriotexto+=" "+document.forms[0]['campo'+j].value+ " " 
                + document.forms[0]['operador'+j][index].text+" '"+crit+"'";

                if (document.forms[0]['andor'+(j)].value!=''){
                        criterio+=document.forms[0]['andor'+(j)].value;
                        index=document.forms[0]['andor'+(j)].selectedIndex;
                        criteriotexto+=" "+document.forms[0]['andor'+(j)][index].text+" ";
                }else{
                        break;
                }
          }
        }

        //criteriotexto = criteriotexto.replace(/%/g,"\\%");
        //alert(criterio);
        document.forms[0].criterio.value="("+ criterio +")";
        document.forms[0].criteriotexto.value=criteriotexto;
        //alert(document.forms[0].criteriotexto.value);
        setTimeout("delay()",100);
}

// sin delay se cierra y no envia datos al servidor!!! (PROBLEMA DEL NAVEGADOR)
function delay(){
        window.close();
}

function ponEnabled(j){
        //( ) son obligados, sino hace andor2-1 !!
        if (document.forms[0]['andor'+(j-1)].selectedIndex>0)
                document.forms[0]['criterio'+j].disabled=false;
        else{
                document.forms[0]['criterio'+j].value='';
                document.forms[0]['criterio'+j].disabled=true;
        }
}


mesk=new Array();
mesk[10]="A";mesk[11]="B";mesk[12]="C";mesk[13]="D";mesk[14]="E";mesk[15]="F";
A=10;B=11;C=12;D=13;E=14;F=15;
let="ABCDEF";

function mes(num){
if(let.indexOf(num) != -1){
        return eval(num)
}else{
 if(num < 10) return eval(num)
 else return mesk[num]
}
}

function color(begin,einde,stappen,stap){
hh1=(mes(begin.charAt(0))*16)+mes(begin.charAt(1));
hh2=(mes(begin.charAt(2))*16)+mes(begin.charAt(3));
hh3=(mes(begin.charAt(4))*16)+mes(begin.charAt(5));
pp1=(mes(einde.charAt(0))*16)+mes(einde.charAt(1));
pp2=(mes(einde.charAt(2))*16)+mes(einde.charAt(3));
pp3=(mes(einde.charAt(4))*16)+mes(einde.charAt(5));

if(hh1 < pp1){
 ff1=hh1+Math.floor((pp1-hh1)/stappen*stap);
 ff1=eval("\'"+mes(Math.floor(ff1/16))+"\'")+eval("\'"+mes(ff1-(Math.floor(ff1/16)*16))+"\'");
}else{
 ff1=hh1-Math.floor((hh1-pp1)/stappen*stap);
 ff1=eval("\'"+mes(Math.floor(ff1/16))+"\'")+eval("\'"+mes(ff1-(Math.floor(ff1/16)*16))+"\'");
}

if(hh2 < pp2){
 ff2=hh2+Math.floor((pp2-hh2)/stappen*stap);
 ff2=eval("\'"+mes(Math.floor(ff2/16))+"\'")+eval("\'"+mes(ff2-(Math.floor(ff2/16)*16))+"\'");
}else{
 ff2=hh2-Math.floor((hh2-pp2)/stappen*stap);
 ff2=eval("\'"+mes(Math.floor(ff2/16))+"\'")+eval("\'"+mes(ff2-(Math.floor(ff2/16)*16))+"\'");
}

if(hh3 < pp3){
 ff3=hh3+Math.floor((pp3-hh3)/stappen*stap);
 ff3=eval("\'"+mes(Math.floor(ff3/16))+"\'")+eval("\'"+mes(ff3-(Math.floor(ff3/16)*16))+"\'");
}else{
 ff3=hh3-Math.floor((hh3-pp3)/stappen*stap);
 ff3=eval("\'"+mes(Math.floor(ff3/16))+"\'")+eval("\'"+mes(ff3-(Math.floor(ff3/16)*16))+"\'");
}

return ff1+ff2+ff3
}

bum=0;bum2=0;
txt=new Array();
txt[0]="";

function lightf(){
 for(i=0;i != Math.floor(message.length/2);i++){txt[i]=color(lightcolor1,lightcolor2,Math.floor(message.length/2),i)};
  for(i=Math.floor(message.length/2);i !=    message.length;i++){txt[i]=color(lightcolor2,lightcolor1,Math.floor(message.length/2),(i-Math.floor(message.length/2)))};
  lightf1();
}

// llamada por lightf
function lightf1(){
 txt[message.length+1]="";
 bum2=message.length-bum;
 for(i=0;i != message.length;i++){
  if(i+bum < message.length){
        txt[message.length+1]=txt[message.length+1] + "<font color='#"+txt[(i+bum)]+"'>"+message.charAt(i)+"</font>"
  }else{
        txt[message.length+1]=txt[message.length+1] + "<font color='#"+txt[i-bum2]+"'>"+message.charAt(i)+"</font>"
  }
 };

 if(bum != message.length){bum++;}
 else{bum=0}

 document.getElementById('light').innerHTML=txt[message.length+1];
 //document.getElementById('light2').innerHTML=txt[message.length+1];
 setTimeout("lightf1()",50)
}


function parpadea(id){
        if (document.getElementById(id).style.backgroundColor=='') document.getElementById(id).style.backgroundColor='#bbbbbb';
        else document.getElementById(id).style.backgroundColor='';
        funcion="parpadea('"+id +"')";
        //alert(funcion);
        setTimeout(funcion,1000);
}



