var portugues 	= 12;
var historia	= 28;
var matematica	= 40;

var peso_1 = 10/portugues;
var peso_2 = 10/historia;
var peso_3 = 10/matematica;

var tipo_1	= "abcde*";
var tipo_2	= "vfx";
var tipo_3	= "";

var ufpe			= "ufpe";
var upe				= "upe";
var prova;

var questoes_upe	= 16;
var questoes_ufpe	= portugues + historia + matematica;

var materia;
var questoes;

var acertos_parte_1	= 0;
var acertos_parte_2	= 0;
var acertos_parte_3	= 0;

var nota_parte_1 	= 0;
var nota_parte_2 	= 0;
var nota_parte_3 	= 0;

//childs
var _nota;
var _acertos;
var _questoes;

var _questoes_parte_1;
var _questoes_parte_2;
var _questoes_parte_3;

var _acertos_parte_1;
var _acertos_parte_2;
var _acertos_parte_3;

var _nota_parte_1;
var _nota_parte_2;
var _nota_parte_3;

var _campo_enen;
var _nota_enen;

//-----------

var respostas	= [];


window.onload = function(){

	prova 		= ufpe;

	_nota 		= document.getElementById('nota');
	_acertos	= document.getElementById('acertos');
	_questoes	= document.getElementById('questoes');

	_questoes_parte_1 = document.getElementById('questoes_parte_1');
	_questoes_parte_2 = document.getElementById('questoes_parte_2');
	_questoes_parte_3 = document.getElementById('questoes_parte_3');

	_acertos_parte_1	= document.getElementById('acertos_parte_1');
	_acertos_parte_2	= document.getElementById('acertos_parte_2');
	_acertos_parte_3	= document.getElementById('acertos_parte_3');

	_nota_parte_1	= document.getElementById('nota_parte_1');
	_nota_parte_2	= document.getElementById('nota_parte_2');
	_nota_parte_3	= document.getElementById('nota_parte_3');

	_campo_enen		= document.getElementById('enen');
	_nota_enen		= document.getElementById('nota_enen');

	if(!_nota_enen) prova = upe;

	if(prova==ufpe) {
		//questoes = questoes_ufpe;
	}else {
		//questoes = questoes_upe;
		peso_1	= 10/questoes;
	}

}

function setDados(obj){
	materia = obj[0];
}


function getTipo(resposta) {
	resposta = resposta.substr(0, 1);
	for(var i=0; i<tipo_1.length; i++)	{
		var atual = tipo_1.substr(i, 1);
		if(resposta==atual) return 1;
	}
	if( resposta==tipo_2.substr(0, 1) || resposta==tipo_2.substr(1, 1) ) return 2;
	return 3;
}



function textoChange(obj, resposta, alvo){
	var valor		= obj.value.toLowerCase();
	var _alvo 		= document.getElementById('id_'+alvo);
	var proximo		= document.getElementById('campo_'+(alvo+1));
	var tipo		= getTipo(resposta);
	var questao		= alvo+1;

	var resposta_atual	= respostas[questao];
	resposta 	= resposta.toLowerCase();
	tipo_3		= resposta;
	//testa os caracteres, so entra no if se for igual a 'abcde' ou 'vfvfvf'
	if( valida(valor, tipo) ){		
		//so entra nesse if, se o gabarito for do tipo 1
		if(tipo==1){			
			//se a resposta for a certa
			if(valor==resposta) {
				//so escreve se a resposta for errada
				if(resposta_atual!=true){
					setNota_tipo1(questao, true);					
					_alvo.innerHTML = "<img src='img/ico_sim.gif' border='0' />";					
					respostas[questao] = true;
				}		
			//se a resposta for errada
			}else questaoErrada(questao, resposta_atual, _alvo);			
		}else if(tipo==2){			
			var resultado = setNota_tipo2(questao, true, resposta, valor);			
			if(resultado==0) _alvo.innerHTML = "<img src='img/ico_nao.gif' border='0' />";
			if(resultado==1) _alvo.innerHTML = "<img src='img/ico_meiosim.gif' border='0' />";
			if(resultado==2) _alvo.innerHTML = "<img src='img/ico_sim.gif' border='0' />";
		}else if(tipo==3){			
			var resultado = setNota_tipo3(questao, true, resposta, valor);			
			if(resultado==0) _alvo.innerHTML = "<img src='img/ico_nao.gif' border='0' />";
			if(resultado==1) _alvo.innerHTML = "<img src='img/ico_sim.gif' border='0' />";			
		}		
		//coloca o cursor no proximo campo
		if( proximo && valor.length==resposta.length ) {
			try{
				proximo.focus();
				proximo.select();
			}catch (erro){
				//alert(erro);
			}
		}
	}else{
		//se a resposta for certa
		if(resposta_atual){			
			if(tipo==1) setNota_tipo1(questao, false);
			if(tipo==2) setNota_tipo2(questao, false);
			if(tipo==3) setNota_tipo3(questao, false);
			respostas[questao] = false;
		}		
		obj.value = "";
		_alvo.innerHTML = "";	
	}	
	imprimeResultado();
}


function questaoErrada(questao, resposta_atual, _alvo) {
	_alvo.innerHTML = "<img src='img/ico_nao.gif' border='0' />";
	if(resposta_atual==true) setNota_tipo1(questao, false);
	respostas[questao] = false;
}


function setNota_tipo1(questao, bool){
	if(prova==ufpe){
		if(questao<=portugues) {
			if(bool){
				acertos_parte_1++;
				nota_parte_1 += peso_1;
			}else if(nota_parte_1>0){
				acertos_parte_1--;
				nota_parte_1 -= peso_1;
			}
		}else if(questao>portugues && questao<=(portugues+historia)) {
			if(bool){
				acertos_parte_2++;
				nota_parte_2 += peso_2;
			}else if(acertos_parte_2>0){
				acertos_parte_2--;
				nota_parte_2 -= peso_2;
			}
		}else if(questao>(portugues+historia)) {
			if(bool){
				acertos_parte_3++;
				nota_parte_3 += peso_3;
			}else if(acertos_parte_3>0){
				acertos_parte_3--;
				nota_parte_3 -= peso_3;	
			}
		}
	}else if(prova==upe){
		if(bool){
			acertos_parte_1++;
			nota_parte_1 += peso_1;
		}else{
			acertos_parte_1--;
			nota_parte_1 -= peso_1;
		}
	}
}



function setNota_tipo2(questao, bool, resposta, valor) {

	if(prova==ufpe){
		alert("NÃO IMPLEMENTADO");
	}else if(prova==upe){
		var nota_questao_atual = respostas[questao];

		if(!nota_questao_atual) nota_questao_atual = 0;
		if(bool){

			var total			= 5;
			var valor_caractere = peso_1/total;
			var nota_questao	= 0;

			var array_resposta	= valor.split("");
			var array_questao 	= resposta.split("");

			for(var i=0; i<total; i++)	{

				var resposta_atual = array_resposta[i];
				var carctere_atual = array_questao[i];

				if(resposta_atual==tipo_2.substr(2, 1) || !resposta_atual) continue;
				if( resposta_atual==carctere_atual ) nota_questao += valor_caractere;
				else nota_questao -= valor_caractere;

			}
			if(nota_questao<0) nota_questao = 0; 
			var acertos	= (nota_questao - nota_questao_atual)/peso_1;
			acertos_parte_1	+= acertos;
			if( String(acertos_parte_1).length>4 ) acertos_parte_1 += 0.00000000000001;
			nota_parte_1 	+= (nota_questao - nota_questao_atual);
			respostas[questao] = nota_questao;
			if(nota_questao==0) return 0;
			if(nota_questao>0 && nota_questao<peso_1) return 1;
			if(nota_questao==peso_1) return 2;

		}else{
			acertos_parte_1	-= (1*(nota_questao_atual))/peso_1;
			nota_parte_1 -= nota_questao_atual;

		}

	}
	return 0;

}

function setNota_tipo3(questao, bool, resposta, valor){
	var resposta_atual = respostas[questao];
	if(resposta==valor && bool) {
		if(!resposta_atual){
			acertos_parte_1	++;
			nota_parte_1 	+= peso_1;
			respostas[questao] = true;
		}
		return 1;
	}else {
		if(resposta_atual){
			acertos_parte_1	--;
			nota_parte_1 	-= peso_1;
			respostas[questao] = false;
		}
		return 0;
	}
	return false;
}




function valida(resposta, tipo){	
	if(tipo==1){
		for(var i=0; i<tipo_1.length; i++){
			var atual = tipo_1.substr(i, 1);
			if(resposta==atual) return true;
		}
	}else if(tipo==2){
		var retorno = false;
		for(var i=0; i<resposta.length; i++){
			var atual = resposta.substr(i, 1);
			if( atual==tipo_2.substr(0, 1) || atual==tipo_2.substr(1, 1) || atual==tipo_2.substr(2, 1) ) retorno = true;
			else return false;
		}
		return retorno;
	}else if(tipo==3) {
		/*
		var retorno = false;
		for(var i=0; i<resposta.length; i++)
		{

			var atual = tipo_3.substr(i, 1);
			var bool = false;
			for(var j=0; j<tipo_3.length; j++)
			{
				var res = resposta.substr(j, 1);
				if(atual==res) {
					bool = true;
					break;
				}
				else bool = false;
			}
			if(!bool) return false;
			else retorno = true;
		}
		return retorno;
		*/

		if(resposta!="") return true;
	}

	return false;
}

function notaFormat(valor){

	var nota_final = String(valor);

	nota_final = nota_final.substr(0,  nota_final.indexOf(".")+5 );
	if(nota_final>9.98 && nota_final<10) nota_final = 10;
	return nota_final;
}

function imprimeResultado() {	
	var acertos_total	= 0;
	var nota_total		= 0;
	if(prova==ufpe){
		_questoes_parte_1.innerHTML	= portugues;
		_questoes_parte_2.innerHTML	= historia;
		_questoes_parte_3.innerHTML	= matematica;
		_acertos_parte_1.innerHTML	= notaFormat(acertos_parte_1);
		_acertos_parte_2.innerHTML	= notaFormat(acertos_parte_2);
		_acertos_parte_3.innerHTML	= notaFormat(acertos_parte_3);	
		_nota_parte_1.innerHTML		= notaFormat(nota_parte_1);
		_nota_parte_2.innerHTML		= notaFormat(nota_parte_2);
		_nota_parte_3.innerHTML		= notaFormat(nota_parte_3);

		nota_total		= notaFormat( (nota_parte_1 + nota_parte_2 + nota_parte_3)/3 );
		acertos_total	= acertos_parte_1 + acertos_parte_2 + acertos_parte_3;
	}else if(prova==upe){
		nota_total		= notaFormat(nota_parte_1);
		acertos_total	= String(acertos_parte_1).substr(0, 4);
	}
	_nota.innerHTML 	= nota_total;
	_acertos.innerHTML	= acertos_total;
	_questoes.innerHTML = questoes;
	if(_campo_enen && _campo_enen.value.length>0) notaEnen(_campo_enen);

}


function notaEnen(obj) {

	var nota_enen 	= obj.value*1;
	if(nota_enen>10){
		nota_enen = 10;
		_campo_enen.value = 10;
	}
	if( !(nota_enen*1 )) _campo_enen.value = "";
	var media 	= _nota.innerHTML*.8;
	var enen	= nota_enen*.2;
	if(media && (nota_enen>_nota.innerHTML)) _nota_enen.innerHTML = "&nbsp; Nota final " + notaFormat(media+enen);
	else if(media) _nota_enen.innerHTML = "&nbsp; Nota final " + _nota.innerHTML;
}



function limpa(){
	if(prova==ufpe){
		acertos_parte_2	 = 0;
		acertos_parte_3	 = 0;
		nota_parte_2	= 0;
		nota_parte_3	= 0;
		_acertos_parte_1.innerHTML	= "&nbsp;";
		_acertos_parte_2.innerHTML	= "&nbsp;";
		_acertos_parte_3.innerHTML	= "&nbsp;";

		_nota_parte_1.innerHTML		= "&nbsp;";
		_nota_parte_2.innerHTML		= "&nbsp;";
		_nota_parte_3.innerHTML		= "&nbsp;";
		_questoes_parte_1.innerHTML	= "&nbsp;";
		_questoes_parte_2.innerHTML	= "&nbsp;";
		_questoes_parte_3.innerHTML	= "&nbsp;";
		_nota_enen.innerHTML	= "&nbsp;";
		_campo_enen.value = "";

	}
	acertos_parte_1	 = 0;
	nota_parte_1	= 0;
	_nota.innerHTML 	= "&nbsp;";
	_acertos.innerHTML	= "&nbsp;";
	_questoes.innerHTML = "&nbsp;";

	var total = questoes;
	for(var i=0;i<total;i++) {
		var campo = document.getElementById('campo_'+(i));
		var img = document.getElementById('id_'+(i));
		if(campo.disabled){
			total++;
		}
		if(campo) campo.value = "";
		if(img) img.innerHTML = "";
		respostas[i+1] = null;
	}
}
