/*;-)))))))))))))
molamil 2004
www.molamil.com
;-)))))))))))))*/


/******************************************
funciones para calcular los
valores y manejar la tabla
-------------------------------------------
desarrollado conforme a 
DOM Level 1
www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
******************************************/

// VENTANA CENTRADA
function ventanaCentrada(doc,nombre,anchura,altura, noScroll){
	noScroll = noScroll ? "no" : "yes";
	xpos = ((screen.width)/2)-(anchura/2);
	ypos = ((screen.height)/2)-(altura/2);
	ventanaFlotante = window.open(doc,nombre,'width='+anchura+',height='+altura+',left='+xpos+',top='+ypos+'directories=0,resizable=0,location=0,status=0,scrollbars='+noScroll+',toolbar=0,menubar=0,titlebar=1');
}	

// CONSTANTES GLOBALES

var IDTABLA = "tQuintuplica";		// id de la tabla quintuplica
var IDSELECTES = "sValoresES";		// id del select con los valores españoles
var IDSELECTUSA = "sValoresUSA";	// id del select con los valores USA
var NUMMAXVALORES = 7;				// número máximo de valores
// texto del mensaje de alerta
var TXTMAX = "Ya se ha seleccionado el número máximo de valores (7)";


// FUNCIONES

function initFormValores(arrValores){
	var miSELECT;
	var i;
	// valores ES
	miSELECT = document.getElementById(IDSELECTES);
	miSELECT.onchange = function(){
		if(this.value != "") creaFilaValor(arrValores, this.value, 0);
	}
	initSelectValores(0, miSELECT);
	// valores USA
	//miSELECT = document.getElementById(IDSELECTUSA);
	//miSELECT.onchange = function(){
	//	if(this.value != "") creaFilaValor(arrValores, this.value, 1);
	//}
	//initSelectValores(1, miSELECT);
}

function initSelectValores(indiceMercado, padreSELECT){
	var miOPTION, miTexto;
	var i;
	for(i = 0; i < arrValores[indiceMercado].length; i++){
		miOPTION = document.createElement("OPTION");
		miOPTION.value = i;
		miTexto = document.createTextNode(arrValores[indiceMercado][i][1]);
		miOPTION.appendChild(miTexto);
		padreSELECT.appendChild(miOPTION);
	}
}

function creaFilaValor(arrValores, indiceValor, idioma){
	var miTABLE, miTR, miIMG, miFORM, miINPUT, miINPUTIMG, miHIDDEN1, miHIDDEN2, miA, miTexto;
	var i;
	var indice, numID;
	var arrTD = new Array(6);
	// tomamos el nodo de la tabla a manipular
	miTABLE = document.getElementById(IDTABLA);
	// creamos la fila
	indice = miTABLE.rows.length - 2;
	if(indice > NUMMAXVALORES){
		alert(TXTMAX);
	}else{
		miTR = miTABLE.insertRow(indice);
		numID = Math.random();
		miTR.id = "tr" + numID;
		// creamos las celdas y las guardamos en el array
		for(i = 0; i < arrTD.length; i++){
			arrTD[i] = creaCeldaValor(miTR, i == 0);
		}
		// rellenamos la celda del ticker
		miIMG = document.createElement("IMG");
		miIMG.src = "img/ic_bandera_" + (idioma == 0 ? "es" : "usa") + ".gif";
		miIMG.width = "15";
		miIMG.height = "16";
		miIMG.border = "0";
		miIMG.hspace = "3";
		miIMG.align = "absmiddle";
		miTexto = document.createTextNode(arrValores[idioma][indiceValor][0]);
		arrTD[0].appendChild(miIMG);
		arrTD[0].appendChild(miTexto);
		// rellenamos la celda de inversion
		miFORM = document.createElement("FORM");
		miFORM.name = "f" + numID;
		miFORM.method = "post";
		miFORM.action = "javascript: actualizaRentabilidadCuatro(" + numID + ")";
		miINPUT = document.createElement("INPUT");
		miINPUT.id = "inversion" + numID;
		miINPUT.type = "text";
		miINPUT.size = "7";
		miINPUT.className = "campo";
		miINPUT.onchange = function(){
			actualizaRentabilidadCuatro(numID);
		}
		miHIDDEN1 = document.createElement("INPUT");
		miHIDDEN1.id = "rentabilidad" + numID;
		miHIDDEN1.type = "hidden";
		miHIDDEN1.value = arrValores[idioma][indiceValor][2];
		miHIDDEN2 = document.createElement("INPUT");
		miHIDDEN2.id = "rentabilidadCuatro" + numID;
		miHIDDEN2.type = "hidden";
		miHIDDEN2.value = "0";
		miTexto = document.createTextNode(" ")
		miINPUTIMG = document.createElement("INPUT");
		miINPUTIMG.type = "image";
		miINPUTIMG.src = "img/b_enter.gif";
		miINPUTIMG.align = "absmiddle";
		miFORM.appendChild(miINPUT);
		miFORM.appendChild(miHIDDEN1);
		miFORM.appendChild(miHIDDEN2);
		miFORM.appendChild(miTexto);
		miFORM.appendChild(miINPUTIMG);
		arrTD[1].appendChild(miFORM);
		// rellenamos la celda de rentabilidad 2003 %
		miTexto = document.createTextNode(arrValores[idioma][indiceValor][2] + "%");
		arrTD[2].appendChild(miTexto);
		// rellenamos la celda de rentabilidad x 4 2003 %
		miTexto = document.createTextNode(arrValores[idioma][indiceValor][2] * 5 + "%");
		arrTD[3].appendChild(miTexto);
		// rellenamos la celda de rentabilidad x 4 2003 e
		miTexto = document.createTextNode("-");
		arrTD[4].appendChild(miTexto);
		// rellenamos la celda de borrar fila
		miA = document.createElement("A");
		miA.href = "javascript:borraFilaValor(\"" + miTR.id + "\");";
		miIMG = document.createElement("IMG");
		miIMG.src = "img/b_borrar.gif";
		miIMG.width = "15";
		miIMG.height = "16";
		miIMG.border = "0";
		miIMG.hspace = "3";
		miIMG.alt = "cerrar fila";
		miA.appendChild(miIMG)
		arrTD[5].appendChild(miA);
		// actualizamos el total
		actualizaTotalValor();
	}
	return indice > NUMMAXVALORES;
}

function creaCeldaValor(padreTR, isTicker){
	var miTD;
	miTD = padreTR.insertCell(padreTR.cells.length)
	miTD.align = isTicker ? "left" : "center";
	miTD.vAlign = "middle";
	miTD.bgColor = isTicker ? "#f0f4f8" : "#f0f4f8";
	miTD.className = isTicker ? "cuerpo_ne_des" : "cuerpo_ne";
	return miTD;
}

function borraFilaValor(idTR){
	var miTABLE, indice;
	indice = document.getElementById(idTR).rowIndex;
	miTABLE = document.getElementById(IDTABLA);
	miTABLE.deleteRow(indice);
	actualizaTotalValor();
}

function actualizaRentabilidadCuatro(numID){
	var miTR, miTD, miINPUT, miHIDDEN1, miHIDDEN2, miTexto, miValor;
	miTR = document.getElementById("tr" + numID);
	miINPUT = document.getElementById("inversion" + numID);
	miINPUT.value = parseFloat(miINPUT.value);
	if(miINPUT.value == "NaN") miINPUT.value = "";
	miHIDDEN1 = document.getElementById("rentabilidad" + numID);
	miHIDDEN2 = document.getElementById("rentabilidadCuatro" + numID);
	miHIDDEN2.value = calculaRentabilidadCuatro(miINPUT.value, miHIDDEN1.value);
	miValor = parseFloat(miHIDDEN2.value);
	miTexto = isNaN(miValor) ? "-" : redondeaNum(miValor, 2);
	miTexto = document.createTextNode(miTexto);
	miTD = miTR.getElementsByTagName("td").item(4);
	miTD.replaceChild(miTexto, miTD.firstChild);
	actualizaTotalValor();
}

function actualizaTotalValor(){
	// FILA TOTAL
	var miTABLE, miTR, miTD, miTexto;
	var arrTotal = calculaTotal();
	miTABLE = document.getElementById(IDTABLA);
	// referenciamos a la fila del total
	miTR = miTABLE.getElementsByTagName("tr").item(miTABLE.rows.length - 2);
	// referenciamos a la celda de inversion y actualizamos
	miTD = miTR.getElementsByTagName("td").item(1);
	miTexto = isNaN(arrTotal[0]) ? "-" : redondeaNum(arrTotal[0], 2);
	miTexto = document.createTextNode(miTexto);
	miTD.replaceChild(miTexto, miTD.firstChild);
	// referenciamos a la celda de rentabilidad y actualizamos
	miTD = miTR.getElementsByTagName("td").item(2);
	miTexto = isNaN(arrTotal[1]) ? "-" : redondeaNum(arrTotal[1], 2) + "%";
	miTexto = document.createTextNode(miTexto);
	miTD.replaceChild(miTexto, miTD.firstChild);
	// referenciamos a la celda de rentabilidad cuatro y actualizamos
	miTD = miTR.getElementsByTagName("td").item(3);
	miTexto = isNaN(arrTotal[2]) ? "-" : redondeaNum(arrTotal[2], 2) + "%";
	miTexto = document.createTextNode(miTexto);
	miTD.replaceChild(miTexto, miTD.firstChild);
	// referenciamos a la celda de rentabilidad cuatro en euros y actualizamos
	miTD = miTR.getElementsByTagName("td").item(4);
	miTexto = isNaN(arrTotal[3]) ? "-" : redondeaNum(arrTotal[3], 2);
	miTexto = document.createTextNode(miTexto);
	miTD.replaceChild(miTexto, miTD.firstChild);
}

function calculaRentabilidadCuatro(valorInversion, valorRentabilidad){
// CALCULO ULTIMA COLUMNA
	valorInversion = parseFloat(valorInversion);
	valorRentabilidad = parseFloat(valorRentabilidad);
	return valorInversion + (valorInversion * valorRentabilidad * 5) / 100;
}

function calculaTotal(){
	/// CALCULOS FILA TOTAL
	var miTABLE, miTRColecion, miTR, miTexto;
	var numID;
	var miInversion, sumaInversion, miRentabilidad, miCartera, sumaCarteras;
	var i, numValores;
	var arrTotal = new Array();
	miTABLE = document.getElementById(IDTABLA);
	miTRColecion = miTABLE.getElementsByTagName("tr");
	sumaInversion = sumaCarteras = 0;
	numValores = miTABLE.rows.length - 3;
	for(i = 1; i <= numValores; i++){
		miTR = miTRColecion.item(i);
		numID = miTR.id.substring(2);
		miInversion = parseFloat(document.getElementById("inversion" + numID).value);
		sumaInversion += miInversion
		miRentabilidad = parseFloat(document.getElementById("rentabilidad" + numID).value);
		miCartera = miInversion + (miInversion * miRentabilidad) / 100;
//alert(miCartera);
		sumaCarteras += miCartera;
	}
	arrTotal[0] = sumaInversion;
	arrTotal[1] = (sumaCarteras / sumaInversion - 1) * 100;
	arrTotal[2] = arrTotal[1] * 5;
	arrTotal[3] = calculaRentabilidadCuatro(arrTotal[0], arrTotal[1]);
	return arrTotal;
}

function redondeaNum(valor, numDecimales){
	var factor = Math.pow(10, numDecimales);
	return Math.round(valor * factor) / factor;
}
