<!-- Array con la lista de precios: -->
var Precios = { v_es:12, v_comes:6, v_edu:20, v_com:10, v_tras:10, cero0:50, cero1:100, cero2:150, cero3:200, cero4:250, cero5:300, busca:20, posi:480, top0:110, top1:150, top2:190}

<!-- Funcion de actualizacion del precio para los checkbuttons: -->
function checkObject(obj, nombreInput)
{
   // Precio total antiguo
   totalValue = document.datos.total.value
   if (totalValue == '')
     oldPrecioTotal = 0
   else
     oldPrecioTotal = parseInt(totalValue)

   // Precio nuevo seleccionado
   precioSel = Precios[nombreInput]
   if(obj.checked){
       document.datos[nombreInput].value = precioSel
       document.datos.total.value = oldPrecioTotal+precioSel
   }
   else{
       document.datos[nombreInput].value = ''
       document.datos.total.value = oldPrecioTotal-precioSel
   }
}

<!-- Funcion de actualizacion del precio para los RadioButtons: -->
function checkRadio(obj, nombreInput, nombreRadio)
{
      // Resetea el grupo de radio buttons
      var radioGrp = document.datos[nombreRadio]
      var numRadioButtons = radioGrp.length

      for (i=0;i<numRadioButtons;i++){

          if (!radioGrp[i].checked) {

             // Obtiene el precio total antiguo
             totalValue = document.datos.total.value
             if (totalValue == '')
                oldPrecioTotal = 0
             else
                oldPrecioTotal = parseInt(totalValue)

             // Actualiza el precio total
             document.datos.total.value = oldPrecioTotal - document.datos[nombreRadio+i].value;

             // Pone a 0 todos los valores de radio-buttons no checkeados
             document.datos[nombreRadio+i].value = 0;

          }
       }

       // Selecciona el objeto y actualiza el precio
       checkObject(obj, nombreInput)
}

<!-- Funcion de actualizacion del precio para los combos -->
function selectObject(obj, nombreInput)
{
  // Precio total antiguo
  totalValue = document.datos.total.value
  if (totalValue == '')
    oldPrecioTotal = 0
  else
    oldPrecioTotal = parseInt(totalValue)
//alert("OLD TOTAL VALUE: " +totalValue)

  // Precio seleccionado antiguo
  oldValue = document.datos[nombreInput].value
  if (oldValue == '')
     oldPrecioSel = 0
  else
     oldPrecioSel = parseInt(document.datos[nombreInput].value)
//alert("OLD SEL PRICE: " +oldValue)

  // Precio nuevo seleccionado
  newPrice = (((obj.checked) && (obj.checked != undefined))||((obj.selectedIndex !=-1)&&(obj.selectedIndex!=undefined)))? obj.value: 0
//alert(obj.checked)
//alert(obj.selectedIndex)
//alert("NEW SEL PRICE: " +newPrice)

  document.datos[nombreInput].value = newPrice
  document.datos.total.value = oldPrecioTotal + parseInt(newPrice)-parseInt(oldPrecioSel)

}

<!-- Funcion de actualizacion del precio para los Radio -->
function resetRadio(nombreRadio, nombreInput)
{
        var radioGrp = document.datos[nombreRadio]
    var numRadioButtons = radioGrp.size
        // Resetea el radioButton
        for (var i=0;i<numRadioButtons;i++){
                radioGrp[i].checked = false;
        }
        // Pone a 0 la caja de texto del precio y
        //  actualiza el precio total.
        selectObject(document.datos[nombreInput], nombreInput)
}
