



// ---------- utilidades del jsp ---------------

// VSimulN1.jsp

function desactivarCobertura(objCheckRef, objCheck, divId) {
	if (!objCheckRef || !objCheck) return;	
	if (objCheckRef.checked) {
		var disa = true;
				objCheck.checked = false;
		if (divId) { 
			var obj = document.getElementById(divId);
			if (obj) obj.style.display = "none";
		}	
	} else {
		var disa = false;
	}
	objCheck.disabled = disa;
}
function desmarcarCobertura(objCheckRef, objCheck, divId) {
	if (!objCheckRef || !objCheck) return;
	if (!objCheckRef.checked) {
				objCheck.checked = false;
				objCheck.disabled = false;
		if (divId) { 
			var obj = document.getElementById(divId);
			if (obj) obj.style.display = "none";
		}	
	} 		
}

// ..se ejecuta al marcar triple fallecimiento o invalidez
function marcarCobertura(objCheckRef, divId) {
	if (!objCheckRef) return;
	if (objCheckRef.checked) {
		var obj = document.forms[0][divId];
			obj.checked = true;
		if (typeof obj.onclick == 'function') obj.onclick();
	}	
}



// VAcontN2.jsp

function pintarProfesiones(valor) {
	var combo = document.forms[0]['profesionAseg'];
	var grupoCode = CCombo.getValue(document.forms[0]['grupoActividad']);
	var ramo = "VIDA";
	CCombo.recargarCombo(valor,combo,grupoCode,ramo,"getProfesiones");
}


function pintarActividades(valor, codigoProfesion) {
	var combo = document.forms[0]['actividad'];
	var codigo = (codigoProfesion&& codigoProfesion!='')?codigoProfesion:CCombo.getValue(document.forms[0]['profesionAseg']);
	var arrCampos = ["codigo","grupoRiesgo"]; // ..en el valor del cambo irán estos campos separados por "|"
	var ramo = "VIDA";
	CCombo.recargarCombo(valor,combo,codigo,ramo,"getActividades",arrCampos); 
}

CCombo.SEP = "|";

CCombo.fillOptions = function(combo, index, obj) {
	console.log("FILL");
	for(var i=0;i<obj.length;i++){
		var cod = obj[i].codigo;
		var des = obj[i].descripcion;
		combo.options[i+index] = new Option(des, cod);
	}
}
CCombo.fillOptionsEx = function(combo, index, obj, arrayCampos) {
	for(var i=0;i<obj.length;i++){
		var value = "";
		for (var x in arrayCampos) {
			value += obj[i][arrayCampos[x]] + CCombo.SEP;
		}
		value = value.substring(0,value.length-1);
		var des = obj[i].descripcion;
		combo.options[i+index] = new Option(des, value);
	}
}


// ---- ordenacion ----------------



function myCharCodeAtSinAcentos(str,pos) {
	
	var r = str.charCodeAt(pos);
	if (r>125) r-=128;
	return r;
}

function ordena(a,b,n) {
	
	var bb = myCharCodeAtSinAcentos(b,n);
	var aa = myCharCodeAtSinAcentos(a,n);
	if (isNaN(bb)) bb =-1; else if (isNaN(aa)) aa =-1; 
	var rr = aa - bb;
	if (rr==0) rr = ordena(a,b,n+1); 
	return rr;
}

function sortValues(a, b) { // ordenación alfabética sin acentos del campo "des"
	if (a.descripcion==b.descripcion) return 0; 
	return ordena(a.descripcion,b.descripcion,0);
}
// -------------- combos  ------------------

function CCombo() {}
CCombo.removeFrom = function(combo, index) 
{
	for(var i=index, l=combo.length;i<l;i++) combo.remove(index);
}

// aumenta un combo a partir de la posición que indica un índice de referencia 
// con los valores del objeto obj
// que deben incluir los campos 'codigo' y 'descripcion'
CCombo.fillOptions = function(combo, index, obj) {
	for(var i=0;i<obj.length;i++){
		var cod = obj[i].codigo;
		var des = obj[i].descripcion;
		combo.options[i+index] = new Option(des, cod);
	}
}

// ordena un array de objetos con los campos 'codigo' y 'descripcion', ordenados por descripcion
CCombo.sortOptionsHash = function (hashArray) 
{
	var arr = [];
	for (var x in hashArray) {
			var elem = [];
			for (var n in hashArray[x]) {
					elem[n] = hashArray[x][n];
			}	
			arr.push(elem);
	}
	return arr.sort(sortValues);
}
CCombo.getOptionsArray = function(hashArray) {
	var arr = [];
	var i = 0;
	for(var x in hashArray){
		arr[i] = {"codigo":x,"descripcion":hashArray[x]};
		i++;
	}
	return arr;
}
CCombo.getValue = function(combo) {
	var index = combo.selectedIndex;
	return combo[index].value;
}
CCombo.getText = function(combo) {
	var index = combo.selectedIndex;
	return combo[index].text;
}
CCombo.setCombo = function (combo, value) {
	for (var i=0,l=combo.options.length; i<l; i++) {
		if (combo.options[i].value==value) { combo.selectedIndex = i; return; }
	}
}
// -------------
// CCombo.recargarCombo : recoge los datos de un combo por AJAX y los muestra
// - valor: valor que debe aparecer seleccionado en el combo
// - combo: objeto que contiene el combo
// - codigo: parámetro para la llamada AJAX
// - nombreFunc: cadena con el nombre de la función de VArecargarCombos a llamar
// - opt_arrayCampos: (opcional) array de nombres de vampos que se fusionan para enviarlos en el value del combo separados por "|"

CCombo.recargarCombo = function(valor, combo, codigo,ramo, nombreFunc, opt_arrayCampos) 
{
	if (!valor) valor = CCombo.getValue(combo);
	CCombo.removeFrom(combo,1);
	
	var arr = [];
	if (codigo == '') { //si no hay codigo se muestra deshabilitado
		combo.disabled = true;
	}
	else 
	{
		combo.disabled = false;
		var dataFromBrowser = {"valor": valor,"combo":combo};
		if (opt_arrayCampos) dataFromBrowser["arrayCampos"] = opt_arrayCampos;
		VArecargarCombos[nombreFunc](codigo,ramo, {"callback":function(dataFromServer) {
			    CCombo.recargarComboCallback(dataFromServer, dataFromBrowser);
			}});
	}
}

CCombo.recargarComboCallback = function(dataFromServer, dataFromBrowser) {
		var lista = dataFromServer;
		var valor = dataFromBrowser.valor;
		var combo = dataFromBrowser.combo;
		
		var arrayCampos = dataFromBrowser.arrayCampos;
		if (arrayCampos) 		CCombo.fillOptionsEx(combo,1,CCombo.sortOptionsHash(lista), arrayCampos);
		else 								CCombo.fillOptions(combo,1,CCombo.sortOptionsHash(lista));
		CCombo.setCombo(combo,valor);
}


// ---------- capitales ---------------

	var ccap = null;
	function CCapitales(annua, bcolor1, bcolor2, opt_dura) {
		var form = document.forms[0];
		this.riesgos = document.getElementById("divRiesgos");
		this.capitales = document.getElementById("divCapitales");
		this.calculado = form["calculado"];
		this.tabla = document.getElementById("tablaCapitales");
		this.capital = form["capital"];
		this.interes = form["interes"];
		this.duracion = opt_dura?{"value":opt_dura}:form["duracion"];
		this.annua = annua;
		this.bcolor1 = bcolor1;
		this.bcolor2 = bcolor2;
		
		this.alertError = "Por motivos técnicos no ha sido posible calcular sus capitales asegurados.";
	};
	
	CCapitales.prototype.setCalculado = function(value) {
			this.calculado.value = value;
	}
		
	CCapitales.prototype.muestraCapa = function(mostrar, capa) {
		capa.style.display = mostrar?"block":"none";
	}
	CCapitales.prototype.showCapitales = function(inputs) {
		this.setCalculado("false");
		if(!inputs){
			this.muestraCapa(true,this.riesgos);
			this.muestraCapa(false,this.capitales);			
		}else{
			this.capital.value = "";
			this.interes.value = "";
			this.pintarTablaCapitales(inputs);
			this.muestraCapa(false,this.riesgos);
			this.muestraCapa(true,this.capitales);
		}
	}


	CCapitales.prototype.calculaCapitales = function() {
		if (!validarRiesgos()) return false;

		this.muestraCapa(true,this.capitales);
		window.location = '#cp';
		capaEspera(true);
		
		var form = document.forms[0];
		var instance = this;
		var dataFromBrowser = {"instance": instance};

		VAcapitales.calcularCapitales(this.capital.value, this.interes.value, this.duracion.value, {"callback":function(dataFromServer) {
			instance.setCapitales(dataFromServer, dataFromBrowser);
		}});
	}
	
	CCapitales.prototype.setCapitales = function(dataFromServer, dataFromBrowser) {
		var instance = dataFromBrowser["instance"];
		var inputs = dataFromBrowser["inputs"];
		var VArespuestaCapitales = dataFromServer;
		if(!VArespuestaCapitales.coe){
			alert(instance.alertError);
		}else{
			instance.setCalculado("true");
			instance.pintarTablaCapitales(inputs, VArespuestaCapitales);
		}
		capaEspera(false);
	}


	
	CCapitales.prototype.pintarTablaCapitales = function(inputs, VArespuestaCapitales){

			var capitales = VArespuestaCapitales? VArespuestaCapitales.capitales : null;
			var dura = this.duracion.value;
		  var annua = this.annua;
			var colorI = this.bcolor1;
			var colorP = this.bcolor2;
			var color = colorP;
			
	
		    //inserta la cabecera de la tabla
		    var rows = this.tabla.rows;
		    var row = rows[1];
		    if (!row) {//si no existe la cabecera habrá que insertarla
	    		row = this.tabla.insertRow(-1);
		    	row.className ="fondnaranja";
			}

		    if(dura==1){
		    	rellenarCeldas(row,[ "A&ntilde;o", "Fallecimiento" ]); 
		    }else{
		    	rellenarCeldas(row,[ "A&ntilde;o", "Fallecimiento", "A&ntilde;o", "Fallecimiento" ]); 	    
		    }

			//rellena las filas de la tabla
			for(var i = 0; i < dura; i+=2)
			{
				if(color==colorI)color = colorP ;
				else color = colorI;
				
				row = rows[(i/2)+2];
				if (!row){	//si no existe la fila habrá que insertarla
					row = this.tabla.insertRow(-1);		  
					row.style.backgroundColor = color;
				}		  	

				if (!inputs) {
					var capital1 = this.getHTML_celda_hidden(capitales[i],i);
					var capital2 = this.getHTML_celda_hidden(capitales[i+1],i+1);
				} else {
					if (capitales) {
						var capital1 = this.getHTML_celda_input(capitales[i],i);
						var capital2 = this.getHTML_celda_input(capitales[i+1],i+1);
					} else {
						var capital1 = this.getHTML_celda_input(null, i);
						var capital2 = this.getHTML_celda_input(null, i+1);
					}	
				}	

				var annua1 = annua++;
				var annua2 = annua++;
				if (i+1==dura) { annua2 = ""; capital2 = "";  }
				if(dura == 1) rellenarCeldas(row,[ annua1, capital1]); 
				else rellenarCeldas(row,[ annua1, capital1, annua2, capital2]); 

			}
			// borrar las filas que sobren
			for (var x=(i/2), l=rows.length-2; x<l; x++) this.tabla.deleteRow(-1); 
	}
	
	// ---------- html ---------------
	
	CCapitales.prototype.getHTML_celda_input = function(value, posAnualidad) {
		if (!value) {
			var obj = document.forms[0]["capital"+posAnualidad];
				value = obj ? obj.value : "";  // si ya existía el input le damos el valor que tuviera
		}		
		value = UtilF.formatearCantidadParaInput(value);
		return '<input type="text" class="formulario" name="capital'+ posAnualidad +'" value="'+ value +'">';
	}
	CCapitales.prototype.getHTML_celda_hidden = function(value, posAnualidad) {
		return value + '<input type="hidden" class="formulario" name="capital'+ posAnualidad +'" value="'+ value +'">';
	}

// ---------- utilidades generales ---------------


var ccomp = null;
function CComprueba(campo, maxlen, nombre) {
	this.campo = campo; 
	this.maxlen = maxlen;
	this.nombre = nombre;
}
CComprueba.prototype.comprobar = function() {
	var texto = this.campo.value; 
	if(texto.length>this.maxlen)
	{
		alert('Introduzca como mucho ' + this.maxlen + ' caracteres en el campo '+this.nombre+'.');
		this.campo.value = this.campo.value.substr(0,this.maxlen);
		this.campo.blur();
		return(false);
	}
}



function checkRadioChild(obj) {
	obj.firstChild.checked = true;
}
function setCursorHand(obj) {
	obj.style.cursor='pointer';
}	
function addOnclick(obj,newOnclick) {
	if (!obj) return;
	var oldOnclick = obj.onclick;
	if (typeof oldOnclick == 'function') 
		obj.onclick = function() {oldOnclick();newOnclick();}
	else obj.onclick = newOnclick;
}
function addEvent(event, obj,newEvent) {
	if (!obj) return;
	var oldEvent = obj[event];
	if (typeof oldEvent == 'function') 
		obj[event] = function() {oldEvent();newEvent();}
	else obj[event] = newEvent;
}
function preaddOnclick(obj,newOnclick) { //si newOnclick no devuelve true no se ejecuta oldOnclick (no olvidar que debe devolver un valor)
	var oldOnclick = obj.onclick;
	if (typeof oldOnclick == 'function') 
		obj.onclick = function() {var r = newOnclick(); if (r) oldOnclick();}
	else obj.onclick = newOnclick;
}
// Funciones para mostrar ocultar capas 
function muestraCapaId(id){
	if (document.layers)capa = eval("document."+id);		
	if (document.all)capa = eval(id+".style");		
	if (document.getElementById)capa = eval("document.getElementById('"+id+"').style");
	capa.display =  "block" ;
}

function ocultaCapaId(id){
	if (document.layers)capa = eval("document."+id);
	if (document.all)capa = eval(id+".style");
	if (document.getElementById)capa = eval("document.getElementById('"+id+"').style");	
	capa.display =  "none" ;
}

function capaEspera(mostrar){
	var espera = document.getElementById('divEspera');
	var tabla = document.getElementById('tablaCapitales');
	
	var coords = UtilAJAX.findCoords(tabla);
	var width = UtilAJAX.findWidth(tabla);
	var widthEspera = UtilAJAX.findWidth(espera);		
	var left = coords["left"];
	var top = coords["top"];
	
	var style = espera.style;
	style.left = (left + (width/2) - (widthEspera/2))+"px";
	style.top = (top+40)+"px";
	style.visibility = (mostrar)?('visible'):('hidden');
}

function rellenarCeldas(fila, arrayContenido) {
	var celdas = fila.cells;
	for (var x=0, l=arrayContenido.length; x<l; x++) {
		var cel = celdas[x] ? celdas[x] : fila.insertCell(x);
		cel.innerHTML = arrayContenido[x];
	}

	// borrar las celdas que sobren
	if (celdas.length>arrayContenido.length) {
		for (var x=arrayContenido.length, l=celdas.length; x<l; x++) fila.deleteCell(-1); 
	}
}
function setSelectValue(objSelect,valueRef)
{
	if (objSelect == null || objSelect.options == null)
		return null;
	
	for (var x=0,l=objSelect.options.length; x<l; x++) {
		if (objSelect.options[x].value == valueRef) { objSelect.selectedIndex = x; return; }
	}
}	

function comprueba() {
	compLongitud(document.forms[0].BENES);
}

/*Esta función se encarga de pasar de un campo a otro, cuando llega al límite del tamaño del primero*/
function chkCampo(rCampoA, rCampoS, maxLon) {
    if (rCampoA.value.length == maxLon) rCampoS.focus();
}


//documento JS

function muestroOcultoContenido(verParametro){
    var elementos= new Array();
		elementos[0]=document.getElementById('productos');
		elementos[1]=document.getElementById('calculaPrecio');
		elementos[2]=document.getElementById('quienes');		

    for(var i=0;i<elementos.length;i++){
		elementos[i].style.display='none';
	}

	switch(verParametro){
	case 1:
	if(elementos[0].style.display='none'){
	elementos[0].style.display='';
	}else{elementos[0].style.display='none'}
	break;
	case 2:
	if(elementos[1].style.display='none'){
	elementos[1].style.display='';
	}else{elementos[1].style.display='none';}
	break;
	case 3:
	if(elementos[2].style.display='none'){
	elementos[2].style.display='';
	}else{elementos[2].style.display='none';}
	break;
	
	}
}
function muestroOcultoContenidoP(verParametro){

    var elementos= new Array();
		elementos[0]=document.getElementById('calculaPrecio');
			

    for(var i=0;i<elementos.length;i++){
		elementos[i].style.display='none';
	}

	if(verParametro == 1){		
		if(elementos[0].style.display='none'){
		elementos[0].style.display='';
		}else{elementos[0].style.display='none'}		
	
	}
}


function oculta (menu) {
	if (document.getElementById && document.createTextNode)
	{
		var tables=document.getElementsByTagName('tr');
		for (var i=0;i<tables.length;i++)
		{
			if(tables[i].title==menu)
			{
			   tables[i].style.display='none'; 	
			}
		}
	}
}

function getEdadContractual(fechaNacimiento) {
		var fecha = UtilV.parseDate(fechaNacimiento,2);
		var mon = fecha.getMonth()-6;
		var year = fecha.getYear();
		if(mon<0){
			mon = 12+mon;
			year--;
		}
		
		var date = new Date(year,mon,fecha.getDate());
		var edad = UtilV.getAgeFromDate(date);		
		return edad;
}

function getEdad(fechaNacimiento) {
		var fecha = UtilV.parseDate(fechaNacimiento,2);
		var mon = fecha.getMonth();
		var year = fecha.getYear();
		
		var date = new Date(year,mon,fecha.getDate());
		var edad = UtilV.getAgeFromDate(date);		
		return edad;
}
