var copiando = false;
var finalPrueba = false;
var nErrores  = 0;
var nPulsaciones  = 0;
var segundos = 0;
var timeStart = false;
var temporit;
var actualChar;
var actualPos = 0;
var spanSelecIni = '<span id=selec class=charActual>';
var spanSelecFi = '</span>';
var plusCometesMozilla = 0;
var originalText = "";
var errorColor = "#FF0000";

function envio(auto)
{		
	if (document.formulario.expediente.value.length < 4)
	{
		if (!auto)
		{
			alert('debe introducir un código de expediente válido');
		}
	}
	else if (document.formulario.expediente.value.substr(0, 3) != "EXP")
	{
		if (!auto)
		{
			alert('debe introducir un código de expediente válido');
		}
	}
	else if (finalPrueba == false)
	{
		alert('no ha acabado la prueba');
	}
	else
	{
		alert('Los resultados de la prueba van a ser enviados a continuación');
		document.formulario.enviando.value = "1";
		document.formulario.submit();
	}
}

function iniciPagina()
{
	sourceText = document.getElementById('textSource');
	originalText = sourceText.innerHTML.substr(0, sourceText.innerHTML.length);
}

function init()
{    
	if (parseInt(document.formulario.penalizacion.value) < 0 ||
		parseInt(document.formulario.penalizacion.value) > 50)		
	{
		alert('Rango de penalización no válido. Introduzca un valor entre 1-50');
	}
    else if (document.getElementById('textSource').innerHTML.length > 2)
    {
        nErrores = 0;
        nPulsaciones = 0;
        segundos = 0;
        document.formulario.tiempo.value = segundos;
        document.formulario.errores.value = nErrores;
        document.formulario.pulsaciones.value = nPulsaciones;
        document.formulario.pError.value = 0;
        document.formulario.ppmb.value = 0;
        document.formulario.ppmn.value = 0;
        copiando = true;
        finalPrueba = false;
        /*if (!timeStart)
	    {
	    	updateCrono();
	        timeStart = true;
	    }*/
	    timeStart = false;
	    clearTimeout(temporit);
        actualPos = 0;
        document.location.href = "#copia";
        document.formulario.tiempo.focus();
        areaText = document.getElementById('textInput');
        areaText.innerHTML = '';
        sourceText = document.getElementById('textSource');
        tempChar = sourceText.innerHTML.substr(0, 1);
        restChar = originalText.substr(1, originalText.length);
        if (tempChar != '<')
        {
        	sourceText.innerHTML = spanSelecIni + tempChar + spanSelecFi + restChar;
        }
        
        if(!document.all)
        {
        	plusCometesMozilla = 4;
        }
    }
    else
    {
        alert("Debe escoger un texto");
    }
}


function noChanges()
{
    alert('Los textos no deben ser cambiados');
    document.formulario.submit();
}

function checkKey(event)
{	
    if (copiando)
    {
    	if (document.formulario.modalidad.value == '1')
        {	//modalidad numero 1
        	var keyCode = event.which ? event.which : event.keyCode;
        	var temp    = String.fromCharCode(keyCode);
				        
	        areaText = document.getElementById('textInput');
	        sourceText = document.getElementById('textSource');
	        actualChar = sourceText.innerHTML.substr(actualPos +
	        			 spanSelecIni.length + plusCometesMozilla, 1);	        	        
	        if (keyCode == 13 && document.all)
		    {
		    	temp = String.fromCharCode(32);
		        nwchar = " ";
		        event.keyCode = 0;
		    }		   
		    else if ((keyCode == 8 || keyCode == 9) && document.all)
		    {
		    	return treureChar();		    	
		    }
		    else if (keyCode == 32 && document.all) 
		    {
		    	nwchar = " ";
		    	event.keyCode = 0;
		    }		    
		    else
		    {		    	
		    	nwchar = String.fromCharCode(keyCode);
		    }
		    if (nwchar)
		    {				    	
		    	if (actualChar == temp)
		    	{		    				    		
		    		textPrimer = sourceText.innerHTML.substr(0, actualPos); 
		    		textFinal = sourceText.innerHTML.substr(actualPos +
		    					spanSelecIni.length + 1 +
		    					spanSelecFi.length + 1 +		    					 
		    					plusCometesMozilla, sourceText.innerHTML.length);
					nextChar = sourceText.innerHTML.substr(actualPos + 
								spanSelecIni.length + 1 +
								spanSelecFi.length +
								plusCometesMozilla, 1);
					
		    		sourceText.innerHTML = 
		    			textPrimer + actualChar + spanSelecIni + nextChar + spanSelecFi +
		    			textFinal;
		    				    		
		    		areaText.innerHTML = areaText.innerHTML + nwchar;		    		
		    		actualPos++;
		    	}
	        }
				        
	        nPulsaciones++;
	        /*actualPos = nPulsaciones;
	        actualChar = document.formulario.textSource.value.substr(actualPos, 1);
	        */
	        	        
	        if (document.formulario.visualizar.value == "1")
	        {
	        	document.formulario.pulsaciones.value = nPulsaciones;
	        	document.formulario.ppmb.value = numberFormat(((nPulsaciones * 60) / segundos), 0);
	        	document.formulario.ppmn.value = numberFormat((((nPulsaciones - (nErrores * document.formulario.penalizacion.value)) * 60) / segundos), 0);
	        }
									
	        if ((actualPos + spanSelecIni.length + spanSelecFi.length + plusCometesMozilla  == document.getElementById('textSource').innerHTML.length) && (actualChar == temp))
	        {
	        	document.formulario.pulsaciones.value = nPulsaciones;
	        	document.formulario.ppmb.value = numberFormat(((nPulsaciones * 60) / segundos), 0);
	        	document.formulario.ppmn.value = numberFormat((((nPulsaciones - (nErrores * document.formulario.penalizacion.value)) * 60) / segundos), 0);
	        	document.formulario.errores.value = nErrores;
                document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);

	            copiando = false;
	            finalPrueba = true;
	            timeStart = false;
	            alert('final de la prueba');
	            envio(true);
	           	//alert('Si su empresa tiene concertada una auditoría mecanográfica con MECASOFT Pro, asegúrese de haber introducido el código de expediente, categoría, nombre de usuario pulse el botón Enviar resultados.');
	            return true;
	        }
	        else
	        {
	            if (!timeStart)
	            {
	                updateCrono();
	                timeStart = true;
	            }
							
	            if (actualChar != temp)
	            {
	            	nErrores++;
	            	if (document.formulario.sonora.value == 1)
	                {
    	            	if (document.all)
    	                {	                    
    	                    document.JavaBeep.oneBeep();	                
    	               	}
    	               	else
    	               	{	               	    
    	               	    java.awt.Toolkit.getDefaultToolkit().beep();
    	               	}
    	            }	            	
	            	if (document.formulario.visualizar.value == "1")
	            	{		                
		                document.formulario.errores.value = nErrores;
		                document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);		                
		            }
		            return false;
	            }	            
	            //document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);
	        }
			return false;
    	}
    	else
    	{	//segunda modalidad    			        
	        
	        var keyCode = event.which ? event.which : event.keyCode;
        	var temp    = String.fromCharCode(keyCode);
				        
	        areaText = document.getElementById('textInput');
	        sourceText = document.getElementById('textSource');
	        actualChar = sourceText.innerHTML.substr(actualPos +
	        			 spanSelecIni.length + plusCometesMozilla, 1);
	        	        
	        if (keyCode == 13 && document.all)
		    {
		    	temp = String.fromCharCode(32);
		        nwchar = " ";
		        event.keyCode = 0;		        
		    }
		    else if ((keyCode == 8 || keyCode == 9) && document.all)
		    {
		    	return treureChar();
		    }
		    else if (keyCode == 32 && document.all)
		    {
		    	nwchar = " ";
		    	event.keyCode = 0;
		    }		    
		    else
		    {
		    	nwchar = String.fromCharCode(keyCode);
		    }
		    if (nwchar)
		    {
		    	textPrimer = sourceText.innerHTML.substr(0, actualPos); 
	    		textFinal = sourceText.innerHTML.substr(actualPos +
	    					spanSelecIni.length + 1 +
	    					spanSelecFi.length + 1 +		    					 
	    					plusCometesMozilla, sourceText.innerHTML.length);
				nextChar = sourceText.innerHTML.substr(actualPos + 
							spanSelecIni.length + 1 +
							spanSelecFi.length +
							plusCometesMozilla, 1);
				
	    		sourceText.innerHTML = 
	    			textPrimer + actualChar + spanSelecIni + nextChar + spanSelecFi +
	    			textFinal;
	    		
	    		
	    		actualPos++;
		    	if (actualChar == temp)
		    	{
		    		if (keyCode == 13)
		    		{
		    			areaText.innerHTML = areaText.innerHTML + "<BR>";
		    		}
		    		else
		    		{
		    			areaText.innerHTML = areaText.innerHTML + nwchar;
		    		}
		    	}
		    	else
		    	{
		    		areaText.innerHTML = areaText.innerHTML + 
		    			'<font color=' + errorColor + '>' + 
		    			nwchar + '</font>';
		    	}
	        }
	        
	        
	        nPulsaciones++;	        
	        
	        if (document.formulario.visualizar.value == "1")
	        {
		        document.formulario.pulsaciones.value = nPulsaciones;
		        document.formulario.ppmb.value = numberFormat(((nPulsaciones * 60) / segundos), 0);
		        document.formulario.ppmn.value = numberFormat((((nPulsaciones - (nErrores * document.formulario.penalizacion.value)) * 60) / segundos), 0);
		    }
						
			//if ((actualPos + spanSelecIni.length + spanSelecFi.length + plusCometesMozilla  == document.getElementById('textSource').innerHTML.length) && (actualChar == temp))
	        if ((actualPos + spanSelecIni.length + spanSelecFi.length + plusCometesMozilla  == document.getElementById('textSource').innerHTML.length))
	        {
	        	document.formulario.pulsaciones.value = nPulsaciones;
	        	document.formulario.ppmb.value = numberFormat(((nPulsaciones * 60) / segundos), 0);
	        	document.formulario.ppmn.value = numberFormat((((nPulsaciones - (nErrores * document.formulario.penalizacion.value)) * 60) / segundos), 0);
	        	document.formulario.errores.value = nErrores;
                document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);
	        	
	            copiando = false;
	            finalPrueba = true;
	            timeStart = false;
	            alert('final de la prueba');
	            envio(true);	            
	            //alert('Si su empresa tiene concertada una auditoría mecanográfica con MECASOFT Pro, asegúrese de haber introducido el código de expediente, categoría, nombre de usuario y pulse el botón Enviar resultados.');
	            return true;
	        }
	        else
	        {
	            if (!timeStart)
	            {
	                updateCrono();
	                timeStart = true;
	            }
	            if (actualChar != temp)
	            {
	                nErrores++;
	                if (document.formulario.sonora.value == 1)
	                {
    	                if (document.all)
    	                {
    	                	document.JavaBeep.oneBeep();
    	               	}
    	               	else
    	               	{	               	    
    	               	    java.awt.Toolkit.getDefaultToolkit().beep();
    	               	}
    	            }
	                if (document.formulario.visualizar.value == "1")
	                {
		                document.formulario.errores.value = nErrores;
		                document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);
	                }
	                return false;
	            }
	            //document.formulario.pError.value = numberFormat((nErrores/nPulsaciones) * 100, 2);
	        }
    		return false;
    	}
    }
    else
    {
        return false;
    }  
}

function treureChar()
{	
    areaText = document.getElementById('textInput');
    //alert(testa.innerHTML);
    //areaText.innerHTML = areaText.innerHTML.substr(0, areaText.innerHTML.length - 1);
    areaText.innerHTML = areaText.innerHTML;
    return false;
}


function updateCrono()
{	
    if (copiando)
    {
        temporit = setTimeout("updateCrono()",1000);
        segundos++;
        document.formulario.tiempo.value = segundos;
    }
}

function numberFormat(number, decimals, decSep, milSep)
{
	decSep = decSep || ",";
	milSep = milSep || ".";

	number = "" + number;

	if(number.indexOf('.') != -1)
	{
		dec  = number.substr((number.indexOf('.') + 1), (number.length - number.indexOf('.')));
		real = parseInt(number.substr(0, number.indexOf('.')));
	}
	else
	{
		dec  = "";
		real = parseInt(number);
	}

	if(dec.length > decimals)
	{
		round = dec.substr((decimals), 1);

		if(round >= 5) 	round = 1;
		else			round = 0;

		dec = "" + (parseInt(dec.substr(0, decimals)) + parseInt(round));
		if(dec.length > decimals)
		{
			real = "" + (real + 1);
			dec = "";
		}
	}
	if(dec.length <= decimals)
	{
		for(i = dec.length; i < decimals; i++)
		{
			dec = dec + "0";
		}
	}

	realMile = new Array();
	real = "" + real;
	for(i = 0; i < (parseInt(real.length / 3)); i++)
	{
		realMile[i] = real.substr(real.length - ((i + 1) * 3), 3);
	}
	realMile[i] = real.substr(0, (parseInt(real.length % 3)));

	real = "";
	for(i = 0; i < realMile.length; i++)
	{
		actual = "" + realMile[i];
		next   = "" + realMile[i+1];
		if(next == "undefined") next = "";

		if(next == "")	real = actual + real;
		else			real = milSep + actual + real;
	}

	if(decimals == 0) decSep = "";
	return(real + decSep + dec);
}
