/* 
grupo: grupo de opción - SO; virtuozzo; SiteBuilder; antispam; ...
ValorOpcion: descripción de la opción seleccionada
IncrementoPrecio: Incremento precio a sumar al precio base
*/

function cambiaOpc(grupo, ValorOpcion, IncrementoPrecio)
{
	// obtenemos opción actual seleccionada de ese grupo y el posible incremento aplicado por ella
	var objOpcionActual = eval('document.opciones.' + grupo + '_opcion');
	var objIncrementoPrecioActual = eval('document.opciones.' + grupo + '_incremento');
	// obtenemos el resumen de las actuales opciones seleccionadas y el total calculado
	var opciones = document.configuracion.opciones.value;
	var newOpciones; 
	var total = document.configuracion.total.value;
	// reemplazamos la actual opción del grupo por la nueva en el resumen de opciones
	if (parseFloat(objIncrementoPrecioActual.value) > 0)
	{
	   if (IncrementoPrecio > 0)
	   {
	      newOpciones = opciones.replace(objOpcionActual.value, ValorOpcion);
	   }
	   else
	   {
	   	// se tratará de la opción por defecto, limitarse a quitar la anterior:
		  newOpciones = opciones.replace(objOpcionActual.value, '');
	   }
	}
	else
	{
		// o lo añadimos si la opción hasta ahora seleccionada era la de por defecto (precio = 0)
		newOpciones = opciones + ValorOpcion + '\n';
	}
	document.configuracion.opciones.value = newOpciones;
	nospaces(document.configuracion.opciones);
	objOpcionActual.value = ValorOpcion;
	// calculamos el nuevo total restando el posible incremento de la anterior opción y sumando el nuevo
	total = parseFloat(total) - parseFloat(objIncrementoPrecioActual.value) + parseFloat(IncrementoPrecio);
	document.configuracion.total.value = redondea(total, 2);
	objIncrementoPrecioActual.value = IncrementoPrecio;
	
	
	// si se selecciona Virtualización o No afectará a los precios a aplicar de los productos del Panel, revisar:
	if (grupo == 'virtuozzo')
	{
		var aplicarIncrementoTipo;
		if (ValorOpcion == 'Sin Virtualizacion.')
		{
			aplicarIncrementoTipo = 'SIN';
		}
		else
		{
			aplicarIncrementoTipo = 'CON';
		}

		var IncrementoPrecioCON;
		var IncrementoPrecioSIN;
		/* Revisar radio 	- panel
				   checkbox - power_pack 
	       		   checkbox - language_pack 
		Si el tipo de precio aplicado es distinto al que hay que aplicar: actuar
		*/		
		if ((document.opciones.panel_incremento.value !=0) && (document.opciones.panel_incremento_tipo.value != aplicarIncrementoTipo))
		{
/*			if (document.opciones.panel_incremento_tipo.value == 'CON')
			{
				IncrementoPrecioCON = document.opciones.panel_incremento.value;
			    IncrementoPrecioSIN = document.opciones.panel_incremento_alternativo.value;
			}
			else
			{
				IncrementoPrecioCON = document.opciones.panel_incremento_alternativo.value;
			    IncrementoPrecioSIN = document.opciones.panel_incremento.value;		
			}
			alternaTipoIncremento('panel', IncrementoPrecioCON, IncrementoPrecioSIN, aplicarIncrementoTipo)
*/			
			alternaTipoIncremento('panel', aplicarIncrementoTipo)
		}
		
		// power_pack
		if ((document.opciones.power_pack_incremento.value !=0) && (document.opciones.power_pack_incremento_tipo.value != aplicarIncrementoTipo))
		{
/*
			if (document.opciones.power_pack_incremento_tipo.value == 'CON')
			{
				IncrementoPrecioCON = document.opciones.power_pack_incremento.value;
			    IncrementoPrecioSIN = document.opciones.power_pack_incremento_alternativo.value;
			}
			else
			{
				IncrementoPrecioCON = document.opciones.power_pack_incremento_alternativo.value;
			    IncrementoPrecioSIN = document.opciones.power_pack_incremento.value;		
			}
			alternaTipoIncremento('power_pack', IncrementoPrecioCON, IncrementoPrecioSIN, aplicarIncrementoTipo)
*/
			alternaTipoIncremento('power_pack', aplicarIncrementoTipo)
		}
		
		// language_pack
		if ((document.opciones.language_pack_incremento.value != 0) && (document.opciones.language_pack_incremento_tipo.value != aplicarIncrementoTipo))
		{
/*		
			if (document.opciones.language_pack_incremento_tipo.value == 'CON')
			{
				IncrementoPrecioCON = document.opciones.language_pack_incremento.value;
			    IncrementoPrecioSIN = document.opciones.language_pack_incremento_alternativo.value;
			}
			else
			{
				IncrementoPrecioCON = document.opciones.language_pack_incremento_alternativo.value;
			    IncrementoPrecioSIN = document.opciones.language_pack_incremento.value;		
			}
			alternaTipoIncremento('language_pack', IncrementoPrecioCON, IncrementoPrecioSIN, aplicarIncrementoTipo)
*/
			alternaTipoIncremento('language_pack', aplicarIncrementoTipo)
		}

	}
	
}

function alternaTipoIncremento(nombre, aplicarIncrementoTipo)
{
	var objIncremento = eval('document.opciones.' + nombre + '_incremento');
	var objIncrementoAlternativo = eval('document.opciones.' + nombre + '_incremento_alternativo');
	var objIncrementoTipo = eval('document.opciones.' + nombre + '_incremento_tipo');
	var total = document.configuracion.total.value;
	total = parseFloat(total) - parseFloat(objIncremento.value) + parseFloat(objIncrementoAlternativo.value);
	document.configuracion.total.value = redondea(total, 2);
	var Incremento = objIncremento.value;
	objIncremento.value = objIncrementoAlternativo.value;
	objIncrementoAlternativo.value = Incremento;
	objIncrementoTipo.value = aplicarIncrementoTipo;
}

/* 
grupo: grupo de opción - SO; virtuozzo; SiteBuilder; antispam; ...
ValorOpcion: descripción de la opción seleccionada
IncrementoPrecio: Incremento precio a sumar al precio base
*/
function cambiaOpcPanel(ValorOpcion, IncrementoPrecioCON, IncrementoPrecioSIN)
{
/*   panel_incremento_alternativo  el otro precio a aplicar dependiendo tipo:
	 panel_incremento_tipo (valores posibles: CON o SIN) */

	// obtenemos opción actual seleccionada de ese grupo y el posible incremento aplicado por ella
	var objOpcionActual = document.opciones.panel_opcion;
	var objIncrementoPrecioActual = document.opciones.panel_incremento;
	// obtenemos el resumen de las actuales opciones seleccionadas y el total calculado
	var opciones = document.configuracion.opciones.value;
	var newOpciones; 
	var total = document.configuracion.total.value;
	
	// calculamos el nuevo total restando el posible incremento de la anterior opción y sumando el nuevo
	var IncrementoPrecio;
	if (document.opciones.virtuozzo_opcion.value != 'Sin Virtualizacion.') 
	{
		IncrementoPrecio = IncrementoPrecioCON;
		document.opciones.panel_incremento_tipo.value = 'CON';
		document.opciones.panel_incremento_alternativo.value = IncrementoPrecioSIN;
	}
	else
	{
		IncrementoPrecio = IncrementoPrecioSIN;
		document.opciones.panel_incremento_tipo.value = 'SIN';
		document.opciones.panel_incremento_alternativo.value = IncrementoPrecioCON;
	}
	
	
	// reemplazamos la actual opción del grupo por la nueva en el resumen de opciones
	if (parseFloat(objIncrementoPrecioActual.value) > 0)
	{
	   if (IncrementoPrecio > 0)
	   {
	      newOpciones = opciones.replace(objOpcionActual.value, ValorOpcion);
	   }
	   else
	   {
	   	// se tratará de la opción por defecto, limitarse a quitar la anterior:
		  newOpciones = opciones.replace(objOpcionActual.value, '');
	   }
	}
	else
	{
		// o lo añadimos si la opción hasta ahora seleccionada era la de por defecto (precio = 0)
		newOpciones = opciones + ValorOpcion + '\n';
	}

	total = parseFloat(total) - parseFloat(objIncrementoPrecioActual.value) + parseFloat(IncrementoPrecio);
	document.configuracion.total.value = redondea(total, 2);
	objIncrementoPrecioActual.value = IncrementoPrecio;

	document.configuracion.opciones.value = newOpciones;
	nospaces(document.configuracion.opciones);
	objOpcionActual.value = ValorOpcion;

}


function cambiaOpcCheck(marcado, ValorOpcion, IncrementoPrecio)
{
	// obtenemos el resumen de las actuales opciones seleccionadas y el total calculado
	var opciones = document.configuracion.opciones.value;
	var newOpciones; 
	var total = document.configuracion.total.value;

	if (marcado == true) 
	{
		newOpciones = opciones + ValorOpcion + '\n';
		// calculamos el nuevo total sumando la nueva opción
		total = parseFloat(total) + parseFloat(IncrementoPrecio);
	}
	else
	{	
		// reemplazamos la actual opción del grupo por la nueva en el resumen de opciones
	    newOpciones = opciones.replace(ValorOpcion, '');
		// calculamos el nuevo total sumando la nueva opción
		total = parseFloat(total) - parseFloat(IncrementoPrecio);
	}

	document.configuracion.opciones.value = newOpciones;
	nospaces(document.configuracion.opciones);

	document.configuracion.total.value = redondea(total, 2);
}

/* los precios de las opciones del panel dependen de si ha seleccionado algún producto de virtualización (virtuozzo)
en este caso se aplica uno y en caso contrario otro */
function cambiaOpcCheckPanel(objChk, ValorOpcion, IncrementoPrecioCON, IncrementoPrecioSIN)
{	
/*   [objChk.name]_incremento_alternativo  el otro precio a aplicar dependiendo tipo:
	 [objChk.name]_incremento_tipo (valores posibles: CON o SIN) */
	 
	// obtenemos el resumen de las actuales opciones seleccionadas y el total calculado
	var opciones = document.configuracion.opciones.value;
	var newOpciones; 
	var total = document.configuracion.total.value;

	// calculamos el nuevo total restando el posible incremento de la anterior opción y sumando el nuevo
	var IncrementoPrecio;
	var objIncremento_tipo = eval('document.opciones.' + objChk.name + '_incremento_tipo');
	var objIncremento_alternativo = eval('document.opciones.' + objChk.name + '_incremento_alternativo');
	if (document.opciones.virtuozzo_opcion.value != 'Sin Virtualizacion.') 
	{
		IncrementoPrecio = IncrementoPrecioCON;
		objIncremento_tipo.value = 'CON';
		objIncremento_alternativo.value = IncrementoPrecioSIN;
	}
	else
	{
		IncrementoPrecio = IncrementoPrecioSIN;
		objIncremento_tipo.value = 'SIN';
		objIncremento_alternativo.value = IncrementoPrecioCON;
	}
	
	var marcado = objChk.checked;
	var objIncrementoPrecioActual = eval('document.opciones.' + objChk.name + '_incremento');
	
	if (marcado == true) 
	{
		newOpciones = opciones + ValorOpcion + '\n';
		// calculamos el nuevo total sumando la nueva opción
		total = parseFloat(total) + parseFloat(IncrementoPrecio);
		objIncrementoPrecioActual.value = IncrementoPrecio;
	}
	else
	{	
		// eliminamos la opción del resumen de opciones
	    newOpciones = opciones.replace(ValorOpcion, '');
		// calculamos el nuevo total restando el incremento que se había aplicado
		total = parseFloat(total) - parseFloat(objIncrementoPrecioActual.value);
		
		objIncrementoPrecioActual.value = 0;
		objIncremento_alternativo.value = 0;
		objIncremento_tipo.value = '';
	}
	document.configuracion.opciones.value = newOpciones;
	nospaces(document.configuracion.opciones);

	document.configuracion.total.value = redondea(total, 2);
}

function nospaces(object) {
   text = object.value;
   //object.value = object.value.replace(/ /,"\r\n");
   while (object.value.search(/(\r\n\r\n)|(\n\n)/) != -1) {
    object.value = object.value.replace(/\r\n\r\n/g, "\r\n");
    object.value = object.value.replace(/\n\n/g, "\n");
   }
}
function redondea(sVal, nDec){ 
    var n = parseFloat(sVal); 
    var s = "0.00"; 
    if (!isNaN(n)){ 
     n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec); 
     s = String(n); 
     s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1); 
     s = s.substr(0, s.indexOf(".") + nDec + 1); 
    } 
    return s; 
   } 
