﻿var w3c_ok=false
var dhtml_ok=false
var layersdom_ok=false

if (document.getElementById) {
    w3c_ok=true
}
if (document.all) {
    dhtml_ok=true
}
if (document.layers) {
    layersdom_ok=true
}
if (w3c_ok || dhtml_ok){
}
else {
alert("Esta página no puede visualizarse con su explorador. Se le dirigirá a la página principal");
location.href="index.htm";
}

var res = new Array();
var html = '<table style="border-right: 1px solid; border-left: 1px solid" ; bordercolor="#000000" cellspacing="0" cellpadding="0"> </table>';
var elos = new Array();
var cont=0


function MuestraCapa(arg1, arg2, arg3) {
var ih=	'<p align="left" style="margin-top: 0; margin-bottom: 3px">Has de asignar el coeficiente K de la siguiente manera:</p> ';
ih += '	<p style= "margin-top:0; margin-bottom:0" align="left">1) K= 25 si aún no has jugado 30 partidas evaluadas.</p> ';
ih += ' <p align="left" style="margin-top: 0; margin-bottom: 0">2) K= 10 si tienes un elo inicial mayor de 2200 (2400 para Elo FIDE).</p> ';
ih += '	<p align="left" style="margin-top: 0; margin-bottom: 0">3) K= 15 en el resto de los casos.</p> ';
ih += '	<p align="left" style="margin-top: 0; margin-bottom: 0">4) Para saber exactamente el coeficiente K, búscate en la lista de jugadores.</p>';
if (w3c_ok) {
	var x=document.getElementById(arg1);
	if (arg3.length>0){
		if (arg3 == "K") {
			x.innerHTML= ih;
		}
		else{
			x.innerHTML='<p align="left">' + arg3 + '</p>';
		}
	}
	x.style.display=arg2;
}
else if(dhtml_ok){
	if (arg3.length>0) {
		if(arg3=="K") {
			document.all["ayuda"].innerHTML = ih;
		}
		else{
			document.all["ayuda"].innerHTML = '<p align="left">' + arg3 + '</p>';			
		}
	}
	document.all["ayuda"].style.display=arg2;
}
//pte: caso en que layersdom=true
}


function EloValido(valor) {
var cadena = valor.toString();
for (var i = 0; i < cadena.length; i++) {
var oneChar = cadena.charAt(i);
if (oneChar < "0" || oneChar > "9") {
return false
}
}
if (parseInt(cadena)<1601 || parseInt(cadena)>3000 || cadena == "") {
return false
}
return true
}

function agregalo() {
// quita el tag "</table>" del final
	cont = res.length - 1
	html = html.substr(0,html.length-8)
	html += '<tr>';
	html += '<td height="25" width="100" align="center" style="border-right: 1px solid;  border-bottom: 1px solid">';
	html += elos[cont];
	html += '</td>';
	html += '<td height="25" width="70" align="center" style="border-right: 1px solid;  border-bottom: 1px solid">';
	html += res[cont];
	html += '</td>';
	html += '<td height="25" width="30" align="center" style="border-bottom: 1px solid">';
	html += '<img id=cont src="images/delete.gif" width="16" height="13" alt="Borrar esta fila" onclick="eliminar(' + cont + ')" style="CURSOR: hand" >'; //
	html += '</td>';
	html += '</tr>';
	html += '</table>';
	if (w3c_ok){
	document.getElementById("valores").innerHTML=html;
	}
	else if(dhtml_ok){
	document.all["valores"].innerHTML = html;
	}
	//pte: caso en que layersdom=true
}




function eliminar(indice) {
//primero elimina los elementos correspondientes de la matriz

	var elos2 = new Array();
	var res2 = new Array();
	for (var k=0;k<elos.length;k++) {
		if (k!=indice) {
			elos2[elos2.length] = elos[k];
			res2[res2.length] = res[k];
		}
	}
	elos = elos2;
	res = res2;
	construir();   // construye la cadena html
}

function construir() {
html = '<table style="border-right: 1px solid; border-left: 1px solid" ; bordercolor="#000000" cellspacing="0" cellpadding="0"> ';
for (var m=0 ;m<elos.length;m++){
	html += '<tr>';
	html += '<td height="25" width="100" align="center" style="border-right: 1px solid;  border-bottom: 1px solid">';
	html += elos[m];
	html += '</td>';
	html += '<td height="25" width="70" align="center" style="border-right: 1px solid;  border-bottom: 1px solid">';
	html += res[m];
	html += '</td>';
	html += '<td height="25" width="30" align="center" style="border-bottom: 1px solid">';
	html += '<img id=m src="images/delete.gif" width="16" height="13" alt="Borrar esta fila" onclick="eliminar(' + m + ')" style="CURSOR: hand" >'; //
	html += '</td>';
	html += '</tr>';
}
html += '</table>';


if (w3c_ok){
document.getElementById("valores").innerHTML=html;
}
else if(dhtml_ok){
document.all["valores"].innerHTML = html;
}
//pte: caso en que layersdom=true
}


function repetir(){
//Vuelve a mostrar la capa del cálculo de elo
MuestraCapa("resultados","none","")
MuestraCapa("todo","block","")
}
				
function otroRes() {
if (w3c_ok){
var nuevoelo=document.getElementById("elorival").value;
var nuevores=document.getElementById("resultado").options[document.getElementById("resultado").selectedIndex].text;
}
else if(dhtml_ok){
var nuevoelo=document.all['elorival'].value;
var nuevores=document.all['resultado'].options[document.all['resultado'].selectedIndex].text;
}
//var prueba=document.getElementById("elorival").value;
//var nuevoelo=document.formElo.elorival.value;
//var nuevores=document.formELO.resultado.options[document.formELO.resultado.selectedIndex].text

if (EloValido(nuevoelo)) {
	res[res.length] = nuevores;
	elos[elos.length] = nuevoelo;
	agregalo();		
} else {
	alert('Ha introducido un número no válido para el elo.');
}
if (w3c_ok){
document.getElementById("elorival").focus();
document.getElementById("elorival").value='';
}
else if (dhtml_ok){
document.all("elorival").focus();
document.all("elorival").value='';
//document.formELO.elorival.focus();
//document.formELO.elorival.value='';
}
}		

function calcular() {
var h='<p style="margin-bottom: 5px; margin-top:0">';
if (elos.length==0){
alert("No hay datos. Para cada partida a computar, introduzca el elo del rival y el resultado.")
return false
}
if (w3c_ok){
var K=parseInt(document.getElementById("coefK").value);
var D; // diferencia de elo
var dif=0; //diferencia de score conseguido a score probable
var SumElo=0;
var ptos=0;
var Eo=parseInt(document.getElementById("eloinicial").value);
	for (var c=0 ;c<elos.length;c++){
	D=Eo - parseInt(elos[c]); //diferencia de elo (positiva si el rival es peor)
	SumElo+=parseInt(elos[c]);
	var N=Math.pow(10, -(D/400));
	P=1/(1+N); //puntuación probable
	if (res[c]=="1/2") {
		dif += 0.5 - P ; //diferencia entre el score conseguido y el score probable
		ptos += 0.5
	}	else {
		dif += parseFloat(res[c])-P;
		ptos += parseFloat(res[c])
	}
	}

var coc=parseFloat(ptos/elos.length);
var DifProb= (-400)*(Math.log((1-coc)/coc)*Math.LOG10E); //Diferencia de elo según los puntos conseguidos
var EloProm= SumElo/elos.length;
if (ptos == 0 || ptos == elos.length || elos.length < 5) {
var perf="";
}
else {
var perf=Math.round(EloProm + DifProb);
}

//alert("coc: " + coc);
//alert("SumElo: " + SumElo);
//alert("DifProb: " +  DifProb);
//alert("EloProm: " +  EloProm);
MuestraCapa("todo","none","");
MuestraCapa("resultados","block","");
document.getElementById("r1").innerHTML= document.getElementById("eloinicial").value;
document.getElementById("r2").innerHTML= elos.length;
document.getElementById("r3").innerHTML= ptos;
document.getElementById("r4").innerHTML= EloProm;
document.getElementById("r5").innerHTML= '<b>' + Math.round(Eo + (dif*K)) + '</b>';

document.getElementById("r6").innerHTML= '<b>' + perf + '</b>';
}
else if(dhtml_ok){
var K=parseInt(document.all.coefK.value);
var D; // diferencia de elo
var dif=0; //diferencia de score conseguido a score probable
var SumElo=0;
var ptos=0;
var Eo=parseInt(document.all.eloinicial.value);
for (var c=0 ;c<elos.length;c++){
D=Eo - parseInt(elos[c]); //diferencia de elo (positiva si el rival es peor
SumElo+= parseInt(elos[c]);
var N=Math.pow(10, -(D/400))
P=1/(1+N); //puntuación probable
	if (res[c]=="1/2") {
	dif += 0.5 - P ; //diferencia entre el score conseguido y el score probable
	ptos += 0.5
}	else {
	dif += parseFloat(res[c])-P;
	ptos += parseFloat(res[c])
}
}
var coc=parseFloat(ptos/elos.length);
var DifProb= (-400)*(Math.log((1-coc)/coc)*Math.LOG10E); //Diferencia de elo según los puntos conseguidos
var EloProm= SumElo/elos.length
if (ptos == 0 || ptos == elos.length || elos.length < 5) {
var perf="";
}
else {
var perf=Math.round(EloProm + DifProb);
}


MuestraCapa("todo","none","");
MuestraCapa("resultados","block","");
document.all["r1"].innerHTML= document.all("eloinicial").value;
document.getElementById("r2").innerHTML= elos.length;
document.getElementById("r3").innerHTML= ptos;
document.getElementById("r4").innerHTML= EloProm;
document.getElementById("r5").innerHTML= '<b>' + Math.round(Eo + (dif*K)) + '</b>';
document.getElementById("r6").innerHTML= '<b>' + perf + '</b>';
}
//pte: caso en que layersdom=true
// return Eo + (dif*K) //pte de redondearlo
}
	

