-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculator.html
145 lines (135 loc) · 6.25 KB
/
calculator.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Calculadora Bitconiana</title></head><body>
<script type="text/javascript">
function formatTime(timeValue, format) {
// Funcion tomada integramente de http://blog.jmacoe.com/programacion/web_developer/javascript-formato-la-hora/
var fmt = format.toUpperCase();
var re = /^(H|HH)(:MM)(:SS)?( AM)?$/;
if (!re.test(fmt)) { fmt = "H:MM AM"; }
var MM = "0" + (timeValue.getMinutes());
MM = MM.substring(MM.length-2, MM.length);
var SS = "0" + (timeValue.getSeconds());
SS = SS.substring(SS.length-2, SS.length);
var H = "" + (timeValue.getHours());
var HH = "0" + H;
HH = HH.substring(HH.length-2, HH.length);
var meridian = "";
if (fmt.indexOf(" AM") != -1) {
meridian = "AM";
if (HH == "00") { HH = "12"; }
if (HH == "12") { meridian = "PM"; }
if (parseInt(HH, 10) > 12) {
meridian = "PM";
var hrs = (parseInt(HH, 10)-12);
H = "" + hrs;
HH = "0" + H;
HH = HH.substring(HH.length-2, HH.length);
}
}
var meridian = "";
var result = "";
if (fmt.indexOf("HH") == -1) { result += H + ":" + MM; } else { result += HH + ":" + MM; }
if (fmt.indexOf("SS") != -1) { result += ":" + SS; }
if (fmt.indexOf(" AM") != -1) { result += " " + meridian; }
return result;
}
function formateador(numero) {
formateo = numero.toFixed(14).toString().split(".");
formateo[1] = formateo[1].split("")
final_con_cero = true;
while (final_con_cero == true){
if (formateo[1][formateo[1].length - 1] == "0")
{ formateo[1].pop(); }
else { final_con_cero = false; }
}
formateo[1] = formateo[1].join("")
salida = formateo.join(".")
return salida.replace(/\.$/, "")
}
function calculador() {
//En http://www.hscripts.com/tutorials/javascript/string-float.php se encuentra un interesante articulo sobre el parseo de numeros y cadenas en Javascript
var bloques = parseInt(document.getElementById("txtExistencia").value);
var intervalo = parseFloat(document.getElementById("txtTiempo").value);
var costo_inicial = parseFloat(document.getElementById("txtCosto").value);
var tabla = document.getElementById("tblEstimaciones");
var filas = tabla.rows;
var fecha_actual = new Date();
var fecha_futura = new Date();
//Los siguientes arrays se usaran para formatear la fecha futura con una de las formas que aparecen en http://www.desarrolloweb.com/articulos/mostrar-fecha-actual-javascript.html
var meses = new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var diasSemana = new Array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
var total_bloques = 0; //210000 es la cantidad de bloques que se crean cada vez segun dice en .......
var dinero_total = 0.0;
//Eliminanos las filas previas (si hay) antes de empezar a rellenar la tabla
for (var registro = 1, longitud = filas.length; registro < longitud; registro++) {
tabla.deleteRow(registro);
}
while (1) {
total_bloques = total_bloques + 210000;
if (total_bloques > 210000) {
costo_inicial = costo_inicial / 2;//El costo disminuye la mitad despues de que se crean 210000 bloques
}
dinero_total = dinero_total + (costo_inicial * 210000);
fecha_futura.setTime((((intervalo * 60) * (total_bloques - bloques)) * 1000) + fecha_actual.getTime());
//Agregamos las filas dinamicamente, gracias a http://www.lawebdelprogramador.com/foros/DHTML/818520-anadir_fila_en_una_tabla.html por el procedimiento
var cuerpo_tabla = document.getElementById("tblEstimaciones").getElementsByTagName("TBODY")[0];
var fila = document.createElement("TR");
var campo1 = document.createElement("TD");
campo1.appendChild(document.createTextNode(diasSemana[fecha_futura.getDay()] + ", " + fecha_futura.getDate() + " de " + meses[fecha_futura.getMonth()] + " de " + fecha_futura.getFullYear() + " a las " + formatTime(fecha_futura, "H:MM:SS")));
fila.appendChild(campo1);
var campo2 = document.createElement("TD");
campo2.appendChild(document.createTextNode(total_bloques));
fila.appendChild(campo2);
var campo3 = document.createElement("TD");
campo3.appendChild(document.createTextNode(formateador(costo_inicial)));
fila.appendChild(campo3);
var campo4 = document.createElement("TD");
campo4.appendChild(document.createTextNode(formateador(costo_inicial * 210000) + " BTC"));
fila.appendChild(campo4);
var campo5 = document.createElement("TD");
campo5.appendChild(document.createTextNode(dinero_total + " BTC"));
fila.appendChild(campo5);
cuerpo_tabla.appendChild(fila);
if (dinero_total >= 21000000.0 || costo_inicial == 0.0) {
break; }
};
}
</script>
<table style="text-align: left; width: 323px; height: 78px;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top; width: 135px;">Bloques existentes
</td>
<td style="vertical-align: top; width: 168px;">Tiempo que toma
crear un nuevo bloque (en minutos) </td>
<td style="vertical-align: top; width: 168px;">Costo actual </td>
</tr>
<tr>
<td style="vertical-align: top; width: 135px;"><input onkeypress="calculador()" id="txtExistencia" value="100000"> </td>
<td style="vertical-align: top; width: 168px;"><input onkeypress="calculador()" id="txtTiempo" value="1"> </td>
<td style="vertical-align: top; width: 168px;"><input onkeypress="calculador()" value="50" id="txtCosto"> </td>
</tr>
</tbody>
</table>
<br>
<table style="text-align: left; width: 1000px; height: 172px;" id="tblEstimaciones" border="1" cellpadding="2" cellspacing="2">
<tbody>
<thead>
<th style="vertical-align: top; width: 310px;">Fecha limite<br>
</th>
<th style="vertical-align: top; width: 159px;">Cantidad total de
bloques<br>
</th>
<th style="vertical-align: top; width: 52px;">Costo<br>
</th>
<th style="vertical-align: top; width: 94px;">Bitcoins que se
generaran<br>
</th>
<th style="vertical-align: top;">Bitcoins en total</th>
</thead>
</tbody>
</table>
<br>
<br>
</body></html>