var M_INDEPENDIENTE=0;
var M_SCO=1;
var M_MAIL=2;
var aktibo = "";
var aukeratua = "";

function Ejercicio(autozuzenketa){
	this.id=__idObj++;
	this.preguntas=new Array();
	this.addPregunta=addPregunta;
	this.getPregunta=getPregunta;
	this.toScreen=toScreen;	
	this.corregir=corregir;
	this.putCorrectas=putCorrectas;
	this.corregirIndependiente=corregirIndependiente;
	this.corregirSco=corregirSco;
	this.startDate=null;
	this.posibles = new Array();
	this.contador = 0;
	this.render = "R_COLUMN";
	this.setRender = setRender;
	this.getRender = getRender;

	this.getNumGaps=getNumGaps;	
	this.getGapsOk=getGapsOk;	

	if (autozuzenketa != null)
		this.autozuzenketa = autozuzenketa;
	else 
		this.autozuzenketa = true;
	this.getAutozuzenketa = getAutozuzenketa;
	function getAutozuzenketa(){
		return this.autozuzenketa;
	}	


	function getNumGaps() {
		return this.posibles.length;
	}
	function getGapsOk() {
		return this.contador;
	}

	function addPregunta(pregunta){			
		this.preguntas[this.preguntas.length]=pregunta;
		for (i=0; i < pregunta.correctas.length; i++) 		
			this.posibles[this.posibles.length]=new Array(pregunta.correctas[i],this.preguntas.length);		
	}
	function isCorrecta(idx){
		var p=this.preguntas[idx];
		return p.isCorrecta();
	}	
	function getPregunta(idx){
		return this.preguntas[idx];
	}
	function getTitulo(){
		return this.titulo;
	}
	function getInstrucciones(){
		return this.instrucciones;
	}	
	function setRender(render) {
		this.render = render;
	}
	function getRender() {
		return this.render;
	}

	function toScreen(){		
		var i=0;
		var html = "";
//		this.posibles.sort();
		this.posibles = shuffle(this.posibles);
		if (this.render == "R_COLUMN") {
			html="<div class='posibleak'>";
    			for (i=0;i<this.posibles.length;i++){    			
    	      		 html+="<span onClick='aukeraClick(this);' id='" + this.posibles[i][1] + "_posibles_" + i + "'>"+this.posibles[i][0]+"</span>";
	  		}
  			html+="</div>";
		}
		html = html + "<form name='frm' method='post' action='javascript:corregir(this)'>";
		if (this.render == "R_COLUMN") {
			html += "<table class='columnas' cellpadding=0 cellspacing=0><tr>";
			for (i=0; i<this.preguntas.length; i++) {
				html += "<th id='id" + this.preguntas[i].id + "' onClick='zutabeClick(this)'>" + this.preguntas[i].getTitulo() + "</th>";
			}
			html += "</tr><tr>";
			for (i=0; i<this.preguntas.length; i++) {
				html += this.preguntas[i].getHtml();
			}
			html += "</tr><tr>";
			for (i=0; i<this.preguntas.length; i++) {
				html += this.preguntas[i].getZuzentzeko();
			}
			html += "</tr></table>";
		} else {
			html += "<table class='column_radio' cellpadding=0 cellspacing=0><tr><td>&nbsp;</td>";
			for (var i=0; i<this.preguntas.length; i++) {
				html += "<th id='izen_id" + this.preguntas[i].id + "'>" + this.preguntas[i].getTitulo() + "</th>";
			}
			html += "</tr><tr>";
			for (i=0; i<this.posibles.length; i++) {
				html += "<tr><th id='_" + i + "' align='left'>" + this.posibles[i][0] + "</th>";
				for (var j=0; j<this.preguntas.length; j++) {
					html += "<td id='erantzun_" + i + "'><input type='radio' name='aukera_" + i + "' value='" + j + "' /></td>";
				}
				html += "</tr>";
			}
			html += "</tr></table>";
		}

		html+="<div class='botoiak'>";
		if (this.autozuzenketa) {
			html+="<input name='elBoton' id='elboton' type='submit' value='Zuzendu'>";
			html+="<input name='elBoton2' id='elboton2' type='button' value='Erantzun zuzenak ikusi' disabled='true' onclick='ejercicio.putCorrectas()'>";
		} else {
			html+="<input name='elBoton2' id='elboton2' type='button' value='Ereduak ikusi' onclick='ejercicio.putCorrectas()'>";
		}
		html+="</form></div>";

		var capa = document.getElementById("div_pregunta");
		capa.innerHTML = html;
//		div_pregunta.innerHTML=html;
		this.startDate=new Date();		
	}
	function putCorrectas(){		
		var i,k;
		var g;		
		for (i=0;i<this.preguntas.length;i++){
			g=this.preguntas[i];			
			g.putCorrecta(this.render);
		}
	}			
	function corregirIndependiente(){
		var i=0;
		this.contador=0;		
		if (this.render == "R_COLUMN") {
			for(i=0;i<this.preguntas.length;i++){
				this.contador = this.contador + this.preguntas[i].isCorrecta(this.render);
			}
		} else {
			zuzenak = 0;
			for (i=0; i<this.posibles.length; i++) {
				eval("balioak = document.forms['frm'].aukera_" + i);
				zuzena = this.posibles[i][1] - 1;
				if (balioak[zuzena].checked) this.contador++;
			}
		}	
//		alert(this.getNumGaps()+" elementu ordenatzeko, "+this.getGapsOk()+" ondo.");
		alert((intentos + 1) + ". saiakera:\n" + this.getNumGaps()+" elementu sailkatzeko, "+this.getGapsOk()+" ondo.\n\n\n(" + reintentos + " saiakera dituzu)\n");
//		if (this.getGapsOk()== 1){
//			alert(this.getNumGaps()+" elementu ordenatzeko, "+this.getGapsOk()+" ondo.");
//		}else{
//			alert(this.getNumGaps()+" elementu ordenatzeko, "+this.getGapsOk()+" ondo.");
//		}
		intentos++;
		if (this.getGapsOk()==this.getNumGaps()){
			frm.elBoton.disabled=true;
			frm.elBoton2.disabled=true;
			alert("Ariketa zuzena");			
		} else if (intentos>=reintentos) {
			frm.elBoton.disabled=true;
			frm.elBoton2.disabled=false;
			alert("Ez dago saiakera gehiago");
		}
	}
	function corregirSco(){
//		this.corregirIndependiente();		
		if ( (intentos>=reintentos) || (this.preguntas[0].getGapsOk()==this.preguntas[0].getNumGaps())) {
			var score=(this.preguntas[0].getGapsOk()/this.preguntas[0].getNumGaps())*100;			
			var ahora=new Date();
			var tiempo_total=Math.round((ahora.getTime()-this.startDate.getTime())/1000);
			if (isNaN(score) || score<0) score=0;
			if (isNaN(tiempo_total) || tiempo_total<0) tiempo_total=0;
			send2Ims(score,tiempo_total);
		}
	}	
	function corregir(){
		this.corregirIndependiente();
//		var LMS=FindAPI(parent);
//		if (LMS!=null) {			
//			this.corregirSco();					
//		}
				
	}				
}
var intentos=0;
function Pregunta(columna,titulo,texto){
	this.id=__idObj++;
	this.columna = columna;
	this.titulo = titulo;
	this.correctas = new Array();
	this.addCorrecta = addCorrecta;
	this.getCorrectas = getCorrectas;
	this.getHtml=getHtml;
	this.getHtmlList=getHtmlList;
	this.getZuzentzeko = getZuzentzeko;
	this.isCorrecta = isCorrecta;
	this.putCorrecta = putCorrecta;
	this.getTitulo = getTitulo;
	this.getColumna = getColumna;
	this.getId = getId;

	function getId() {
		return this.id;
	}
	function getTitulo(){
		return this.titulo;
	}
	function getColumna(){
		return this.columna;
	}
	function addCorrecta(texto) {
		this.correctas[this.correctas.length] = texto;
	}
	function getCorrectas() {
		return this.correctas;
	}

	function getHtml(){		
	  	html="<td id='id" + this.id + "' onClick='zutabeClick(this)' class='aukerak'>&nbsp;<ul id='zut_id"+this.id+"'></ul></td>";
		return html;
	}
	function getHtmlList(){		
	  	html="<td id='id" + this.id + "' class='aukerak'></td>";
		return html;
	}
	function getZuzentzeko(){		
	  	html="<td>&nbsp;<b><ul class='zuzenak' id='div_id"+this.id+"'></ul></b>" + "</td>";
		return html;
	}

	function isCorrecta(render) {
		zuzenak = 0;
		zerrenda = document.getElementById("zut_id" + this.id);
		if (render == "R_COLUMN") {
			aukerak = zerrenda.childNodes;
			zuzena = "_" + this.id + "_posibles";
			for (var i=0; i < aukerak.length; i++) {
				balio = aukerak[i].id;
				if (balio.indexOf(zuzena) == 0) zuzenak++;
			}
		}
		return zuzenak;
	}

	function putCorrecta(render) {
		if (render == "R_COLUMN") {
			balio = "Zuzenak:";
			for (i=0; i<this.correctas.length; i++) {
				balio += "<li>" + this.correctas[i] + "</li>";
			}
			eval("div_id"+this.id+".innerHTML=' "+balio+"';");		
		} else {
			kodea = "<br /><span class='correcta'>(" + this.titulo + ")</span>";
			var capak = document.getElementsByTagName("th");
			for (var j=0; j < this.correctas.length; j++) {
				garbia = garbitu(this.correctas[j]);
				for (var r=0; r < capak.length; r++) {
					if (capak[r].innerHTML.indexOf(kodea) < 0)
						if (garbitu(capak[r].innerHTML) == garbia) {
							capak[r].innerHTML = capak[r].innerHTML + kodea;
						}
				}
			}
		}
	}
}

function zutabeClick(zein) {
	id = "zut_" + zein.id;
	zerrenda = document.getElementById(id);
	if (aktibo.className != "eginda") {
		aktibo.className = "eginda";
		aukera.className = "eginda";
		aukera = aktibo.cloneNode(true);
		aukera.id = "_" + aukera.id;
		if (aukera.innerHTML != "") {
			zerrenda.appendChild(aukera);
		}
	}
	aktibo.innerHTML = "";
}

function aukeraClick(zein) {
	if (zein.className != "eginda") {
		zein.className = "aukeratua";
		aukera = zein;
		aktibo = zein.cloneNode(true);
		if (aktibo.innerHTML.indexOf("<li>") != 0) {
			balio = "<li>" + aktibo.innerHTML;
			balio += "<img src='/jetspeed/ariketak/ha_images/columnas/ezabatu.gif' class='ezabatu' alt='Zutabetik ezabatu' onClick='ezabatu(\"" + aktibo.id + "\");' /></li>";
			aktibo.innerHTML = balio;
		}
	}
}

function ezabatu(zein) {
	var capa = document.getElementById("_" + zein);
//	capa.innerHTML = "";
	capa.parentNode.removeChild(capa);
	capa = document.getElementById(zein);
	capa.className = "";
}

function garbitu(testua) {
	if (testua != null) {
		testua = testua.toUpperCase();
		testua = testua.replace(/<BR>/g,"");
		testua = testua.replace(/<BR\/>/g,"");
		testua = testua.replace(/<BR \/>/g,"");
		testua = testua.replace(/<P>/g,"");
		testua = testua.replace(/<\/P>/g,"");
		kar = unescape("%0A");
		var re=new RegExp(kar,'g');
		testua = testua.replace(re,"");
		kar = unescape("%0D");
		var re=new RegExp(kar,'g');
		testua = testua.replace(re,"");
		testua = trim(testua);
		return testua;
	} else return ("");
}

function trim(cadena){ 
	for(i=0; i<cadena.length; ){
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else break; 
	}
	for(i=cadena.length-1; i>=0; i=cadena.length-1){
		if(cadena.charAt(i)==" ") cadena=cadena.substring(0,i);
		else break; 
	}
	return cadena;
}

function shuffle(o) {
	for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; 
}

var __idObj=0;
///////////////////////////
function corregir(){
ejercicio.corregir();
}

function __eventMouseOver(q){			
//	div_alt.style.top=window.event.clientY;
//	div_alt.style.left=window.event.clientX;		
//	div_alt_texto.innerHTML=q;
//	div_alt.style.visibility='visible';	
}
function __eventMouseOut(){
//	div_alt.style.visibility='hidden';
}
////////////////////////////////////////////////////////////////
//window.onsubmit=function descarga(){	
//	ejercicio.corregirIndependiente();
//	var LMS=FindAPI();
//	if (LMS!=null){
//			var score=(ejercicio.getGapsOk()/ejercicio.getNumGaps())*100;			
//			var ahora=new Date();
//			var tiempo_total=Math.round((ahora.getTime()-ejercicio.startDate.getTime())/1000);
//			if (isNaN(score) || score<0) score=0;
//			if (isNaN(tiempo_total) || tiempo_total<0) tiempo_total=0;
//			send2Ims(score,tiempo_total);	
//	}
//}


