// JavaScript Document
// create a "fish" object
function fish (name, level, info) {
	this.name = name; // name of species
	this.level = level; // mercury concentration level in ppm
	this.info = info; // species info text which will appear at bottom of calculator
}
//generic message. put something between the quotes if you want to add generic message
gm = "";
//for fish with no mercury info
noinfo = "There is no information regarding mercury contamination available for this species at this time. This does not mean that this species contains no mercury!";
// create an array of fish objects
var fish_array = [
	new fish("haz clic aquí para escoger", "",gm), // gm is for generic message (see above--currently it is blank)
	new fish("Abadejo (Atlántico 0.03 ppm)", 0.03,gm),
	new fish("Atún Albacora (enlat.- 0.35 ppm)", 0.35, "Coincide con la pesca de palangre dermersal.  El  atún albacora es capturado usando el método de pesca de palangre, que mata o captura millones de ballenas, delfines, tiburones y tortugas marinas por año."),
	new fish("Atún Albacora (Capt Cen.-0.14 ppm)", 0.14, "El atún albacora capturado con cenuelo es mas joven, y contiene niveles mas bajos de mercurio que en los adultos"),
	new fish("Atún (enl. en trozos- 0.12 ppm)", 0.12,gm),
	new fish("Atún (fres. o cong.- 0.38 ppm)", 0.38,gm),
	new fish("Almejas (0.00 ppm)", 0.00, "Los niveles de mercurio en las almejas están por debajo del límite de detección de .01 ppm FDA."),
	new fish("Bagre o Cuminte (0.05 ppm)", 0.05,"Catfish"),
	new fish("Bacalao (Atlántico 0.11 ppm)", 0.11,gm),
	new fish("Caballa (0.73 ppm) ", 0.73,gm),
	new fish("Camarón (0.00 ppm)", 0.00, "Los niveles de mercurio en los camarones son menores que el límite de detección de 0.01 ppm.  La mayoría de los camarones vendidos en los Estados Unidos viene de las ambientalmente destructivas facilidades de acuacultura en Asia."),
	new fish("Cangrejo (0.06 ppm)", 0.06, "Incluye los cangrejos azul, rey y nieve."),
	new fish("Dorado (0.16 ppm)", 0.16,"Este Dato es un promedio de los datos FDA publicados en el sitio web http://www.cfsan.fda.gov/~frf/seamehg2.html"),
	new fish("Halibut (0.26 ppm)", 0.26,gm),
	new fish("Langosta (Norteamérica 0.31 ppm)", 0.31,gm),
	new fish("Lenguado (0.05 ppm)", 0.05,gm),
	new fish("Lofolátilo (1.45 ppm)", 1.45,gm),
	new fish("Marlín (0.49 ppm)", 0.49,"Objetivo secundario de pesca en las pesca de palangre en Costa Rica"),
	new fish("Mero (0.55 ppm)", 0.55,gm),
	new fish("Ojo de Vidrio (0.54 ppm)", 0.54,"Candil de Atlantico.  In addition to being high in mercury, orange roughy has seen dramatic declines in many fisheries. From a sustainablility perspective it is best to avoid eating orange roughy."),
	new fish("Ostras (0.00)", 0.00,"La ostras probadas por FDA fueron encontradas con niveles 0.01 ppm, lo que puede considerarse bastante bajo en mercurio."),
	new fish("Pecten (0.05 ppm)", 0.05,"Las dragas para el pecten causan severos daños al habitat del piso marino.  Además, especies amenazadas de tortugas marinas y otras especies son capturadas en forma incidental y son descartadas, a menudo muertas o agonizantes, como fauna de acompañamiento."),
	new fish("Perca (Aqua Dulce- 0.14 ppm)", 0.14,gm),
	new fish("Perca (Oceano (ND)", 0.00,"Los datos mostraron que las percas oceánicas tienen niveles de mercurio bajo el nivel límite de detección de 0.01 ppm. Este es un pez bajo en mercurio."),
	new fish("Pesca Blanca (0.07 ppm)", 0.07,gm),
	new fish("Pirana Marina (0.31 ppm)", 0.31,gm),
	new fish("Pez Espada (0.97 ppm)", 0.97, "Las flotas de palangre dirigidas al pez espada son una de las amenazas mundiales a las tortugas marinas, poniendo algunas especies en peligro de extinction en los próximos 10 años."),
	new fish("Pollock (0.06 ppm)", 0.06,gm),
	new fish("Pez sable (0.22 ppm)", 0.22,gm),
	new fish("Robalo o snook (Mar- 0.27 ppm)", 0.27,gm),
	new fish("Roncador (Atlantico 0.05 ppm)", 0.05,gm),
	new fish("Salmón (0.01 ppm)", 0.01, "Mientras que el salmón tiende a ser bajo en mercurio, el salmon cultivado contiene más altos niveles de PCB. Las granjas de salmones son extremadamente dañinas para lo ecosistemas oceánicos.  Rechace el salmón cultivado."),
	
	new fish("Tiburon (0.99 ppm)", 0.99, "Además de ser altos en mercurio muchas especies de tiburón han sido disminuidas pro las flotas de palangre."),
	
	
	new fish("Sardina Gallera (0.04 ppm)", 0.04,gm),
	new fish("Tilapia (0.01 ppm)", 0.01,gm),
	new fish("Trucha (Aqua Dulce- 0.03 ppm)", 0.03,gm),
	new fish("Trucha (Oceano- 0.25 ppm)", 0.25,"Sea Trout is sometimes called weakfish")	
];

// calculate concentrations based on weight and diet
// var names were originally same as spreadsheet cells, but not anymore!
// the columns are actually like this:
//	b	c	d	f
// and rows with input boxes on them are 3, 8, 9, 10, 11, 22, 23
//
// the input boxes are named after the cell values D3, F22, and so on
function calculate () {
        d3 = document.form1.D3.value;
        d8 = document.form1.D8.value;
        d9 = document.form1.D9.value;
        d10 = document.form1.D10.value;
        c11 = document.form1.C11.value;
        d11 = document.form1.D11.value;
        f22 = document.form1.F22.value;
        f23 = document.form1.F23.value; 

	//weird js behavior means we've got to get index value first!
	b8idx = document.form1.B8.value;
	if (!isNaN(parseInt(b8idx)) && b8idx > 0) {
		c8 = fish_array[b8idx].level;
		document.form1.C8.value = c8 + " ppm";
	} else {
		c8 = 0;
		document.form1.C8.value = "";
	} 

	b9idx = document.form1.B9.value;
	if (!isNaN(parseInt(b9idx)) && b9idx > 0) {
		c9 = fish_array[b9idx].level;
		document.form1.C9.value = c9 + " ppm";
	} else {
		c9 = 0;
		document.form1.C9.value = "";
	} 

	b10idx = document.form1.B10.value;
	if (!isNaN(parseInt(b10idx)) && b10idx > 0) {
		c10 = fish_array[b10idx].level;
		document.form1.C10.value = c10 + " ppm";
	} else {
		c10 = 0;
		document.form1.C10.value = "";
	} 

	// make sure user enters numbers! 
	if (isNaN(parseFloat(c10))) c10 = 0;
	if (isNaN(parseFloat(c11))) c11 = 0;
	if (isNaN(parseFloat(d3))) d3 = 0;
	if (isNaN(parseFloat(d8))) d8 = 0;
	if (isNaN(parseFloat(d9))) d9 = 0;
	if (isNaN(parseFloat(d10))) d10 = 0;
	if (isNaN(parseFloat(d10))) d11 = 0;

	// make fields blank instead of 0
	if (d8 == 0 || c8 == 0) document.form1.D8.value = '';
	if (d9 == 0 || c9 == 0) document.form1.D9.value = '';
	if (d10 == 0 || c10 == 0) document.form1.D10.value = '';
	if (d11 == 0 || c11 == 0) document.form1.D11.value = '';

	if (d3 <= 0) {
		alert ("Please enter your weight on line 1.");
		return;
	}
	
	// convert lbs to kilos
	e3 = precision(d3 / 2.2, 2);
	
	// species 1
	e8 = precision((d8 / 7)* 28.35, 2);
	s1 = precision((e8 * c8) / e3, 2);
	if (s1 == 0) document.form1.F8.value = "";
	else document.form1.F8.value = s1;

	// species 2
	e9 = precision((d9 / 7) * 28.35, 2);
	s2 = precision((e9 * c9) / e3, 2)	;
	if (s2 == 0) document.form1.F9.value = "";
	else document.form1.F9.value = s2;

	// species 3
	e10 = precision((d10 / 7) * 28.35, 2);
	s3 = precision((e10 * c10) / e3, 2);
	if (s3 == 0) document.form1.F10.value = "";
	else document.form1.F10.value = s3;
	
	// species 4 (fill in the blank)
	e11 = precision((d11 / 7) * 28.35, 2);
	s4 = precision((e11 * c11) / e3, 2);
	if (s4 == 0) document.form1.F11.value = "";
	else document.form1.F11.value = s4;

	// total dosage in &mu;g/kg-day
	f22 = precision(s1 + s2 + s3 + s4, 2);
	if (f22 == 0) document.form1.F22.value = "";
	else document.form1.F22.value = f22;

	// total as percentage of EPA limit (which is 0.1)
	f23 = precision(100 * f22 / 0.1, 1);
	if (f23 == 0) document.form1.F23.value = "---";
	else document.form1.F23.value = f23 + "%";

}

// round off numbers to arg[1] decimal places
// usage: precision(n, decimal_places)
// sometimes small numbers get rounded to zero
function precision () {
	var str = arguments[0];
	var prec = arguments[1];
	str = Math.round(parseFloat(str) * Math.pow(10, prec)) / Math.pow(10, prec);
	return str;
}
//preload the meter images via the Image obj:
if(document.images){ 
	var metergreen = new Image();
	metergreen.src = "/img/dose_meter3.gif";
}
if(document.images){ 
	var meteryello = new Image();
	meteryello.src = "/img/dose_meter2.gif";
}
if(document.images){ 
	var meterred = new Image();
	meterred.src = "/img/dose_meter1.gif";
}
//switch the meter image with an onClick of the Calculate button:
function metergo () {
	percent = f23;
	//meter control: swap images
	if (percent <= 50){
		document.meter.src = metergreen.src;
		return;
	}
	if (percent > 50 && percent <= 99){
		document.meter.src = meteryello.src;
		return;
	}
	if (percent > 99){
		document.meter.src = meterred.src;
		return;
	}
	
}
