// ############## class Exceptions #########
function Exception(message)
{
	alert(message);
}
// ############## class exception #########

// ############## class dominiocoleccion #########
function DominioCollection()
{
	this.Dominios = [];
}

DominioCollection.prototype.Calcular=function()
{
	var tempdominio;
	for(i=0;i<this.GetLength();i++)
	{
		//navego por cada dominio
		tempdominio=this.Dominios[i];
		//calculo el resultado
		tempdominio.CalcularDominio();
	}
}

DominioCollection.prototype.Add = function (dominio)
{
	var dominioposicion=this.Dominios.length;
	this.Dominios[dominioposicion]=dominio;
}

DominioCollection.prototype.GetLength = function ()
{
	return this.Dominios.length;
}

DominioCollection.prototype.Initialize=function(init, end)
{
	if(this.Dominios.length>0)
	{
		for(d=init;d<end;d++)
		{
			var nombredominio=this.Dominios[d].GetFullName(this.Dominios[d].ID);
			HideShowSomething(false,nombredominio);
		}
	}
}
// ############## class dominiocoleccion #########

// ############## class dominio ##############
function Dominio(id, nombre, color)
{
	this.Preguntas = [];
	this.ID=id;
	this.Descripcion=nombre;
	this.Resultado;
	this.Color=color;
}

Dominio.prototype.BoolAreAQ = function ()
{
	//are answered questions?
	var areaq=false;
	for(a=0;a<this.Preguntas.length;a++)
	{
		var _preguntaactual=this.Preguntas[a];
		var isPreguntaValidated = false;
		for(j=0;j<_preguntaactual.Respuestas.length;j++)
		{
			var _respuestaactual=_preguntaactual.Respuestas[j];
			var _control=document.getElementById("dominio-"+this.ID+"-pregunta-"+a+"-respuesta-"+_respuestaactual.Importancia);
			if(_control.checked)
			{
				areaq=true;
				break;
			}
		}
	}
	return areaq;
}

Dominio.prototype.Add = function (pregunta)
{
	var posicion=this.Preguntas.length;
	this.Preguntas[posicion]=pregunta;
}

Dominio.prototype.Render = function(isVisible, objecttobeprinted)
{
	var _stringtorender="\n<div id=\"dominio-" + this.ID + "\"";
	if (!isVisible)
	{
		_stringtorender += " style=\"display:none\"";
		objecttobeprinted.value="";
	}
	_stringtorender += ">\n";
	for(i=0;i<this.Preguntas.length;i++)
	{
		_stringtorender += this.Preguntas[i].Render("dominio-"+this.ID+"-pregunta-"+i);
		//_stringtorender+=this.Preguntas[i].Descripcion+"<br>";
	}
	_stringtorender += "\n</div>\n";
	if(objecttobeprinted != null)
	{
		objecttobeprinted.value += _stringtorender;
	}
	return _stringtorender;
}

Dominio.prototype.GetFullName=function(id)
{
	return "dominio-"+id;
}

Dominio.prototype.Validar=function(option)
{
	var isDomainValidated = true;
	var strings="";
	for(a=0;a<this.Preguntas.length;a++)
	{
		var _preguntaactual=this.Preguntas[a];
		var isPreguntaValidated = false;
		for(j=0;j<_preguntaactual.Respuestas.length;j++)
		{
			var _respuestaactual=_preguntaactual.Respuestas[j];
			var _control=document.getElementById("dominio-"+this.ID+"-pregunta-"+a+"-respuesta-"+_respuestaactual.Importancia);

			if(_control.checked)
			{
				
				strings+=_preguntaactual.Descripcion+":-Validada-\n"
				isPreguntaValidated = true;
				j=_preguntaactual.Respuestas.length-1;
			}
			else
			{
				//strings+=_preguntaactual.Descripcion+":Invalidada\n"
			}
		}
		isDomainValidated = isDomainValidated && isPreguntaValidated;
	}
	if(option=="showvalidator")
	{
		alert(strings);
	}
	return isDomainValidated;
}

Dominio.prototype.CalcularDominio = function()
{
	var valor;
	var importancia;
	var resultado=0;
	for(a=0;a<this.Preguntas.length;a++)
	{
		var _preguntaactual=this.Preguntas[a];
		for(j=0;j<_preguntaactual.Respuestas.length;j++)
		{
			var _respuestaactual=_preguntaactual.Respuestas[j];
			var _control=document.getElementById("dominio-"+this.ID+"-pregunta-"+a+"-respuesta-"+_respuestaactual.Importancia);
			if(_control.checked)
			{
				valor=(parseInt(_control.value)+1)*(parseInt(_preguntaactual.Importancia));
				resultado=(parseInt(resultado)+parseInt(valor));
			}
		}
	}
	this.Resultado=(parseInt(resultado));
//alert(this.Resultado);
}

Dominio.prototype.GetLength = function ()
{
	return this.Preguntas.length;
}
// ############## end class dominio ##############


// ############## class pregunta ##############
function Pregunta(importancia, descripcion, consejo, nota, id)
{

	this.Respuestas = [];
	this.Importancia = importancia;
	this.Descripcion = descripcion;
	this.Consejo=consejo;
	this.Nota=nota;
	this.ID=id;
}

Pregunta.prototype.Render = function (name)
{
	if(this.Descripcion.indexOf("(1)"))
	{
		var replaceText = "<img src=\"../images/EcoFootPrint/Note1.jpg\" style=\"cursor:help;\" onmouseover=\"mostrar('nota" + this.ID + "');\" onmouseout=\"ocultar('nota" + this.ID + "');\">";
		replaceText += "<div id=\"nota" + this.ID + "\" class=\"TipEcological\">" + this.Nota + "</div>";
		this.Descripcion = this.Descripcion.replace("(1)", replaceText);
	}
	var resultado="<table align=center cellpadding=\"0\" cellspacing=\"0\" border=0><tr><td colspan=\"2\" width=\"500\"><span class=\"ecoQuestion\">"+this.Descripcion;
	if(this.Consejo!="")
	{
		resultado+="</span><img src=../Images/EcoFootPrint/questionmark.gif align=\"texttop\" onclick=\"ShowLayer('"+this.ID+"')\" style=\"cursor:hand;\" width=80 border=0><div id=layer" + this.ID + " style=\"display:none\" class=\"consejo\"><br><br>"+this.Consejo+"</div>";

	}
	resultado +="<br><br></td></tr>\n";
	resultado += "<tr><td width=\"440\" class=\"historia1\">\n";
	for(h=0;h<this.Respuestas.length;h++)
	{
		resultado += "" + this.Respuestas[h].Render(name) + "<br><br>";
	}
	resultado += "</td><td width=\"60\" valign=\"middle\"><img src='../Images/EcoFootPrint/a' id=imagen-"+name+" style=\"display:none\"></td>";
	resultado += "</tr>\n<tr><td colspan=\"2\" width=\"500\" height=\"50\" align=\"center\" valign=\"middle\"><img src=../Images/EcoFootPrint/b.gif></td></tr></table>\n";
	return resultado;
}

Pregunta.prototype.Add = function (respuesta)
{
	var posicion=this.Respuestas.length;
	this.Respuestas[posicion]=respuesta;
}
// ############## end class pregunta ##############



// ############## class Respuesta ##############
function Respuesta(importancia,descripcion, color)
{
	this.Descripcion = descripcion;
	this.Importancia = importancia;
	this.Color=color;
}

Respuesta.prototype.Render = function (name)
{
	var resultado = "<input type=\"radio\" id=\"" +name+"-respuesta-"+this.Importancia + "\" name=\"" + name + "\" value=\"" + this.Importancia + "\" onclick=\"MuestraHuella('imagen-" + name + "', '" + this.Importancia +"')\">&nbsp;" + this.Descripcion + "\n";
	return resultado;
}
// ############## end class respuesta ##############


// ##### Static functions ###
function MuestraHuella(id, color)
{
	var imagen=document.getElementById(id);
	imagen.src="../Images/EcoFootPrint/"+color+".gif";
	imagen.style.display="block";
}
//used to show or hide any object with style.display property.
function HideShowSomething(show, _objectname)
{
	var _object=document.getElementById(_objectname);
	if(show==true)
	{
		_object.style.display="block";
	}
	else
	{
		_object.style.display="none";
	}
}
function _GetObject(name)
{
	if(document.getElementById(name)!=null)
	{
		return document.getElementById(name);
	}
	else
	{
		alert("System.Exception: No object or instance available");
	}
}

function ShowLayer(id)
{

	var layer=document.getElementById("layer"+id);
	if(layer.style.display=="none")
	{
		layer.style.display="block";
	}
	else
	{
		layer.style.display="none";
	}
}

var mouseX, mouseY;
document.onmousemove = document_onMouseMove;

function document_onMouseMove(evt)
{
	evt = (evt) ? evt : event;
	if (evt.pageX) 
	{
		mouseX = evt.pageX;
		mouseY = evt.pageY;
	} 
	else 
	{
		mouseX = evt.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
		mouseY = evt.clientY + document.documentElement.scrollTop  + document.body.scrollTop;
	}
}

		
function mostrar(panelID)
{
	var panel = document.getElementById(panelID);
	var panelWidth = 732 - mouseX;
	
	panel.style.left = mouseX + "px";
	panel.style.top  = mouseY + "px";
	panel.style.position = "absolute";
	panel.style.visibility = "visible";

	panel.style.width = panelWidth;
}

function ocultar(panelID)
{
	var panel = document.getElementById(panelID);
	panel.style.visibility = "hidden";		
}
// ##### End Functions ###
