--- internet/budget.frm	1969-12-31 19:00:00.000000000 -0500
+++ internet/budget.frm	2008-12-28 06:50:10.000000000 -0500
@@ -0,0 +1,10 @@
+<input type="hidden" name="var:tabInetstat" value="<? echo $var:tabInetstat ?>" id="uiPostTab">
+<input type="hidden" name="box:settings/Statistic/StartOfMonth" value="<? query box:settings/Statistic/StartOfMonth ?>" id="uiPostStartOfMonth">
+<input type="hidden" name="connection0:settings/Budget/Enabled" value="<? query connection0:settings/Budget/Enabled ?>" id="uiPostBudgetOn">
+<input type="hidden" name="connection0:settings/Budget/ConnectionTime" value="<? query connection0:settings/Budget/ConnectionTime ?>" id="uiPostBudgetTime">
+<input type="hidden" name="connection0:settings/Budget/WarnOnly" value="<? query connection0:settings/Budget/WarnOnly ?>" id="uiPostWarnOnly">
+<input type="hidden" name="connection0:settings/VolumeRoundUp/Enabled" value="<? query connection0:settings/VolumeRoundUp/Enabled ?>" id="uiPostRoundUpOn">
+<input type="hidden" name="connection0:settings/VolumeRoundUp/Bytes" value="<? query connection0:settings/VolumeRoundUp/Bytes ?>" id="uiPostRoundUpBytes">
+<input type="hidden" name="connection0:settings/Budget/Period" value="<? query connection0:settings/Budget/Period ?>" id="uiPostBudgetPeriod">
+<input type="hidden" name="connection0:settings/Budget/VolumeLow" value="<? query connection0:settings/Budget/VolumeLow ?>" id="uiPostBudgetVolumeLow">
+<input type="hidden" name="connection0:settings/Budget/VolumeHigh" value="<? query connection0:settings/Budget/VolumeHigh ?>" id="uiPostBudgetVolumeHigh">
--- internet/budget.html	1969-12-31 19:00:00.000000000 -0500
+++ internet/budget.html	2008-12-28 06:50:10.000000000 -0500
@@ -0,0 +1,39 @@
+<div id="content">
+<div class="backtitel"><div class="rundrt"><div class="rundlt"><div class="ecklb"><div class="eckrb"><div class="foretitel">
+Tarif eintragen
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+Geben Sie hier das enthaltene Datenvolumen oder die Freistunden Ihres Tarifs an.
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb5"><input type="checkbox" id="uiViewBudgetOn" onclick="OnToggleBudget()">&nbsp;<label for="uiViewBudgetOn">{?de.internet.budget.html:15?}</label></p>
+<div class="ml25">
+<p class="mb5"><input type="radio" name="uiViewTarif" id="uiViewBudgetVolumeOn" onclick="OnToggleTarif(1)">&nbsp;<label for="uiViewBudgetVolumeOn">Volume budget on</label></p>
+<p class="mb5" style="margin-left: 25px">
+<input type="text" size="7" maxlength="6" class="Eingabefeld" id="uiViewBudgetVolumeVal" style="text-align: right"> MB Data-volume for  Data volume value per month<br />
+Beispiel: 5000 MB (entsprechen 5 Gigabyte)</p>
+<p class="mb5" style="margin-left: 25px"><input type="checkbox" id="uiViewRoundUpOn" onclick="OnToggleRoundUp()">&nbsp;<label for="uiViewRoundUpOn">View Round up </label>&nbsp;
+<select id="uiViewRoundUpBytes">
+<option value="1000">volle kB</option>
+<option value="1000000" selected>volle MB</option>
+</select>
+</p>
+<p class="mb5"><input type="radio" name="uiViewTarif" id="uiViewBudgetTimeOn" onclick="OnToggleTarif(2)">&nbsp;<label for="uiViewBudgetTimeOn">Time Budget</label></p>
+<p class="mb5" style="margin-left: 25px">
+<input type="text" size="6" maxlength="3" class="Eingabefeld" id="uiViewBudgetTimeVal" style="text-align: right">{?de.internet.budget.html:65?}<br />{?de.internet.budget.html:70?}
+</div>
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<label for="uiViewStartOfMonth">{?de.internet.budget.html:75?}</label>
+<input type="text" size="3" maxlength="2" class="Eingabefeld" id="uiViewStartOfMonth">{?de.internet.budget.html:80?}
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb5">
+Within section "System / INFO-display" you can decide, that the info LED starts flashing if the Data amount is reached or the time limit of free connection is reached.
+<span id="uiViewDisconnectText" style="display:none">{?de.internet.budget.html:90?}</span></p>
+<p class="pCheck25" id="uiDisconnect" style="display:none"><input type="checkbox" id="uiViewDisconnect">&nbsp;
+<label for="uiViewDisconnect">Disconnect Internet connection if volume or free time limit is reached.
+</label></p>
+</div></div></div></div></div></div>
+<? include ../html/de/home/rbb_applyok.html ?>
+</div>
--- internet/budget.js	1969-12-31 19:00:00.000000000 -0500
+++ internet/budget.js	2008-12-28 06:50:10.000000000 -0500
@@ -0,0 +1,182 @@
+<!-- ../internet/budget.js -->
+<style type="text/css">
+<!--
+
+.pCheck25 {text-indent: -25px; padding-left: 25px;}
+-->
+</style>
+<script type="text/javascript">
+<? include ../html/de/js/val.js ?>
+<? include ../html/de/js/jsl.js ?>
+var g_mldSoM = "{?de.internet.budget.js:5?}";
+var g_mldTime = "{?de.internet.budget.js:10?}";
+var g_mldVolume = "{?de.internet.budget.js:15?}";
+var g_mldStartChanged = "{?de.internet.budget.js:20?}"
+var g_Mega = 1000000;
+var g_Shift32 = 4294967296;
+function mb2byte(mb){ return Math.floor(g_Mega*mb); }
+function byte2mb(b){ return Math.round(b/g_Mega); }
+function byte2low(b){ return b%g_Shift32; }
+function byte2high(b){ return Math.floor(b/g_Shift32); }
+function highlow2byte(h,l){ return h*g_Shift32+l; }
+function uiDoOnLoad() {
+var Title = "Tarif eintragen";
+document.title = Title;
+var tmp=0;
+var tmp2=0;
+// StartofMonth
+jslCopyValue("uiViewStartOfMonth","uiPostStartOfMonth");
+// RoundUp
+jslGetCheckValue("uiViewRoundUpOn","uiPostRoundUpOn");
+if (jslGetValue("uiPostRoundUpBytes")=="1000")
+jslSetSelection("uiViewRoundUpBytes","1000");
+else
+jslSetSelection("uiViewRoundUpBytes","1000000");
+OnToggleRoundUp();
+// WarnOnly
+jslSetChecked("uiViewDisconnect",jslGetValue("uiPostWarnOnly") != "1");
+// Time (in hours)
+tmp = jslGetValue("uiPostBudgetTime");
+tmp /= 3600;
+jslSetValue("uiViewBudgetTimeVal", Math.floor(tmp));
+// Volume (in MB)
+var low = Number(jslGetValue("uiPostBudgetVolumeLow"));
+var high = Number(jslGetValue("uiPostBudgetVolumeHigh"));
+tmp = highlow2byte(high,low);
+tmp = byte2mb(tmp);
+jslSetValue("uiViewBudgetVolumeVal", Math.floor(tmp));
+OnToggleTarif(jslGetValue("uiPostBudgetTime") != "0" ? 2:1);
+// Budget
+jslGetCheckValue("uiViewBudgetOn","uiPostBudgetOn");
+OnToggleBudget();
+if (!isDslIp() && !isWanIp()) {
+jslDisplay("uiViewDisconnectText", true);
+jslDisplay("uiDisconnect", true);
+}
+}
+function uiDoSave() {
+var i = 0;
+// StartofMonth
+var tmp = jslGetValue("uiViewStartOfMonth");
+if (tmp != jslGetValue("uiPostStartOfMonth")) {
+if (!confirm(g_mldStartChanged)) return false;
+if (valIsZahl(tmp) && tmp>0 && tmp<=31) {
+jslCopyValue("uiPostStartOfMonth","uiViewStartOfMonth");
+} else {
+alert(g_mldSoM); return false;
+}
+}
+// RoundUp
+jslSetCheckValue("uiPostRoundUpOn","uiViewRoundUpOn");
+if (document.getElementById("uiViewRoundUpBytes").options[0].selected == true)
+jslSetValue("uiPostRoundUpBytes","1000");
+else
+jslSetValue("uiPostRoundUpBytes","1000000");
+// WarnOnly
+jslSetValue("uiPostWarnOnly",jslGetChecked("uiViewDisconnect") ? "0" : "1");
+// Budget
+jslSetCheckValue("uiPostBudgetOn","uiViewBudgetOn");
+// Time (in hours)
+if (jslGetChecked("uiViewBudgetOn"))
+{
+if (jslGetChecked("uiViewBudgetTimeOn") == true)
+{
+jslSetValue("uiPostBudgetVolumeLow","0");
+jslSetValue("uiPostBudgetVolumeHigh","0");
+tmp = jslGetValue("uiViewBudgetTimeVal");
+if (valIsZahl(tmp) && tmp>0 && tmp<=744)
+{
+jslSetValue("uiPostBudgetTime",tmp*3600);
+}
+else
+{
+alert(g_mldTime);
+return false;
+}
+}
+else
+jslSetValue("uiPostBudgetTime","0");
+// Volume (in MB)
+if (jslGetChecked("uiViewBudgetVolumeOn") == true)
+{
+tmp = Number(jslGetValue("uiViewBudgetVolumeVal"));
+if (isNaN(tmp) || tmp <= 0)
+{
+alert(g_mldVolume);
+return false;
+}
+tmp = mb2byte(tmp);
+var tmphigh = byte2high(tmp);
+tmphigh = byte2low(tmphigh); // Damit ist auch tmphigh höchstens 32-Bit
+var tmplow = byte2low(tmp);
+jslSetValue("uiPostBudgetVolumeLow",tmplow);
+jslSetValue("uiPostBudgetVolumeHigh",tmphigh);
+}
+else
+{
+jslSetValue("uiPostBudgetVolumeLow","0");
+jslSetValue("uiPostBudgetVolumeHigh","0");
+}
+}
+// Save
+jslSetValue("uiPostMenu", jslGetValue("uiPostMenu"));
+jslSetValue("uiPostPageName", "inetstat");
+jslSetValue("uiPostErrorPageName", "budget");
+jslFormSubmit("uiPostForm");
+}
+function uiDoCancel() {
+jslGoTo(jslGetValue("uiPostMenu"), "inetstat");
+}
+function uiDoHelp() {
+jslPopHelp("hilfe_budget");
+}
+function OnToggleRoundUp () {
+if (jslGetChecked("uiViewRoundUpOn") == true)
+jslEnable("uiViewRoundUpBytes");
+else
+jslDisable("uiViewRoundUpBytes");
+}
+function OnToggleBudget() {
+if (jslGetChecked("uiViewBudgetOn") == true) {
+jslEnable("uiViewBudgetTimeOn");
+jslEnable("uiViewBudgetVolumeOn");
+OnToggleTarif(jslGetChecked("uiViewBudgetTimeOn") ? 2:1);
+jslEnable("uiViewDisconnect");
+}else{
+jslDisable("uiViewBudgetTimeOn");
+jslDisable("uiViewBudgetTimeVal");
+jslDisable("uiViewBudgetVolumeOn");
+jslDisable("uiViewBudgetVolumeVal");
+jslDisable("uiViewRoundUpOn");
+jslDisable("uiViewRoundUpBytes");
+jslDisable("uiViewDisconnect");
+}
+}
+function OnToggleTarif(id) {
+jslSetChecked("uiViewBudgetVolumeOn", id==1);
+jslSetChecked("uiViewBudgetTimeOn", id==2);
+jslSetEnabled("uiViewBudgetTimeVal", id==2);
+jslSetEnabled("uiViewBudgetVolumeVal", id==1);
+jslSetEnabled("uiViewRoundUpOn", id==1);
+if (id==1) {
+OnToggleRoundUp();
+} else {
+jslDisable("uiViewRoundUpBytes");
+}
+}
+function isAtamode () {
+var isDsl = "<? echo $var:isDsl ?>";
+var isAta = "<? echo $var:isAta ?>";
+var AtaMode = "<? query box:settings/ata_mode ?>";
+return (isDsl == "0") || (isAta == "1" && AtaMode == "1");
+}
+function isDslIp () {
+var caps = "<? query sar:settings/encapsulation ?>";
+return !isAtamode() && (caps == "dslencap_ether" || caps == "dslencap_ipnlpid" || caps == "dslencap_ipsnap" || caps == "dslencap_ipraw");
+}
+function isWanIp () {
+var caps = "<? query sar:settings/encapsulation ?>";
+var type = "<? query connection0:settings/type ?>";
+return isAtamode() && type == "pppoe" && caps == "dslencap_ether";
+}
+</script>
--- internet/inetstat.frm	1969-12-31 19:00:00.000000000 -0500
+++ internet/inetstat.frm	2008-11-24 11:25:33.000000000 -0500
@@ -0,0 +1,2 @@
+<input type="hidden" name="var:tabInetstat" value="<? echo $var:tabInetstat ?>" id="uiPostTab">
+<input type="hidden" name="box:settings/Statistic/Reset" value="" id="uiPostStatReset" />
--- internet/inetstat.html	1969-12-31 19:00:00.000000000 -0500
+++ internet/inetstat.html	2008-12-28 06:50:10.000000000 -0500
@@ -0,0 +1,136 @@
+<? setvariable var:showBalken 0 ?>
+<? if eq $var:settimeknown 1 `
+<? if eq <? query connection0:settings/Budget/Enabled ?> 1 `
+<? setvariable var:showBalken 1 ?>
+` ?>
+` ?>
+<div id="content">
+<div class="backtitel"><div class="rundrt"><div class="rundlt"><div class="ecklb"><div class="eckrb"><div class="foretitel">
+{?de.internet.inetstat.html:10?}
+</div></div></div></div></div></div>
+<div class="backframe"><div class="ecklm"><div class="eckrm"><div class="rundrb"><div class="rundlb"><div class="foredialog"><div class="ie_b10">
+<div id="uiBudget" style="display:none">
+<ul class="tabs">
+<li><a href="javascript:Tabs(1)">{?de.internet.inetstat.html:15?}</a></li>
+<li class="tabs_on"><div class="activtab">{?de.internet.inetstat.html:20?}</div></li>
+</ul>
+<div class="backdialog" id="BudgetNoTime" style="display:none"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb10">{?de.internet.inetstat.html:25?}</p>
+<p>{?de.internet.inetstat.html:30?}</p>
+<p class="Buttonlink"><input type="button" onclick="uiDoBudget()" value="{?de.internet.inetstat.html:35?}" class="Pushbutton180"></p>
+</div></div></div></div></div></div>
+<div class="backdialog" id="BudgetNoTarif" style="display:none"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb10">
+If your connection is time or volume billed, then you can disply the time or volume consumption graficaly.
+</p>
+<p>{?de.internet.inetstat.html:45?}</p>
+<p class="Buttonlink"><input type="button" onclick="uiDoBudget()" value="{?de.internet.inetstat.html:50?}" class="Pushbutton180"></p>
+</div></div></div></div></div></div>
+<div id="BudgetTarif" style="display:none">
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb5">
+<? print $var:BoxName ?> This shows you the consumation of volume or internetime. 
+</p>
+<? if eq $var:showBalken 1 `
+<table id="tBalken">
+<tr>
+<td colspan="2">{?de.internet.inetstat.html:60?}</td>
+</tr>
+<tr>
+<td class="bar"><img src="/html/de/images/gruen.gif" height="8" width="20" name="valuebar" id="uiViewImageValue" style="padding-left:3px;"></td>
+<td><label id="uiViewLabelValue">{?de.internet.inetstat.html:65?}</label></td>
+</tr>
+<tr>
+<td colspan="2">{?de.internet.inetstat.html:70?}</td>
+</tr>
+<tr>
+<td class="bar"><img src="/html/de/images/blau.gif" height="8" width="30" id="uiViewImageTime" style="padding-left:3px;"></td>
+<td><label id="uiViewLabelTime">{?de.internet.inetstat.html:75?}</label></td>
+</tr>
+</table>
+<p style="display:none;" id="uiViewWarning">
+<label id="uiViewTipp">?</label><label id="uiViewEndDate">?</label>.
+</p>
+` ?>
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p>{?de.internet.inetstat.html:100?}</p>
+<p class="Buttonlink"><input type="button" onclick="uiDoBudget()" value="{?de.internet.inetstat.html:105?}" class="Pushbutton180"></p>
+</div></div></div></div></div></div>
+</div>
+</div>
+<div id="uiCounter" style="display:none">
+<ul class="tabs">
+<li class="tabs_on"><div class="activtab">{?de.internet.inetstat.html:110?}</div></li>
+<li><a href="javascript:Tabs(0)">{?de.internet.inetstat.html:115?}</a></li>
+</ul>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p class="mb5">
+<? print $var:BoxName ?> collects the the Internet online time or the download volume. The Online-Counter my show different information as shown on your providers bill.
+</p>
+<? if neq $var:settimeknown 1 `
+<p>{?de.internet.inetstat.html:130?}</p>
+` ?>
+<? if eq {?de.internet.inetstat.html:135settimeknown?} 1 `
+<table id="tStat" class="tborder">
+<tr>
+<th></th>
+<th style="width: 130px; text-align: left;">{?de.internet.inetstat.html:295?} {?de.internet.inetstat.html:300?}</th>
+<th style="width: 100px; text-align: center;">Daten gesamt</th>
+<th style="text-align: center;">gesendet</th>
+<th style="text-align: center;">empfangen</th>
+<th style="text-align:center;">{?de.internet.inetstat.html:305?}</th>
+</tr>
+<tr>
+<th class="c1">{?de.internet.inetstat.html:310?}</th>
+<td class="c211"><span id="spanTodayTime">__:__</span></td>
+<td class="c212"><span id="spanTodaySum">____ MB</span></td>
+<td class="c22"><span id="spanTodayOut">____ MB</span></td>
+<td class="c24"><span id="spanTodayIn">____ MB</span></td>
+<td class="c23"><? query inetstat:status/Today/OutgoingCalls ?></td>
+</tr>
+<tr>
+<th class="c1">{?de.internet.inetstat.html:320?}</th>
+<td class="c211"><span id="spanYesterdayTime">__:__</span></td>
+<td class="c212"><span id="spanYesterdaySum">____ MB</span></td>
+<td class="c22"><span id="spanYesterdayOut">____ MB</span></td>
+<td class="c24"><span id="spanYesterdayIn">____ MB</span></td>
+<td class="c23"><? query inetstat:status/Yesterday/OutgoingCalls ?></td>
+</tr>
+<tr>
+<th class="c1">{?de.internet.inetstat.html:330?}</th>
+<td class="c211"><span id="spanThisWeekTime">__:__</span></td>
+<td class="c212"><span id="spanThisWeekSum">____ MB</span></td>
+<td class="c22"><span id="spanThisWeekOut">____ MB</span></td>
+<td class="c24"><span id="spanThisWeekIn">____ MB</span></td>
+<td class="c23"><? query inetstat:status/ThisWeek/OutgoingCalls ?></td>
+</tr>
+<tr>
+<th class="c1">{?de.internet.inetstat.html:340?}</th>
+<td class="c211"><span id="spanThisMonthTime">__:__</span></td>
+<td class="c212"><span id="spanThisMonthSum">____ MB</span></td>
+<td class="c22"><span id="spanThisMonthOut">____ MB</span></td>
+<td class="c24"><span id="spanThisMonthIn">____ MB</span></td>
+<td class="c23"><? query inetstat:status/ThisMonth/OutgoingCalls ?></td>
+</tr>
+<tr>
+<th class="c1">{?de.internet.inetstat.html:350?}</th>
+<td class="c211"><span id="spanLastMonthTime">__:__</span></td>
+<td class="c212"><span id="spanLastMonthSum">____ MB</span></td>
+<td class="c22"><span id="spanLastMonthOut">____ MB</span></td>
+<td class="c24"><span id="spanLastMonthIn">____ MB</span></td>
+<td class="c23"><? query inetstat:status/LastMonth/OutgoingCalls ?></td>
+</tr>
+</table>
+` ?>
+</div></div></div></div></div></div>
+<div class="backdialog"><div class="ecklm"><div class="eckrm"><div class="ecklb"><div class="eckrb"><div class="foredialog">
+<p>
+Here you can reset the volume or Internet time Counter.
+</p>
+<p class="Buttonlink"><input type="button" onclick="uiDoReset()" value="{?de.internet.inetstat.html:365?}" class="Pushbutton180"></p>
+</div></div></div></div></div></div>
+</div>
+<? include ../html/de/home/rbb_refresh.html ?>
+</div></div></div></div></div></div></div>
+</div>
--- internet/inetstat.js	1969-12-31 19:00:00.000000000 -0500
+++ internet/inetstat.js	2008-12-28 06:50:10.000000000 -0500
@@ -0,0 +1,372 @@
+<!-- ../internet/inetstat.js -->
+<style type="text/css">
+<!--
+
+#tStat {margin: 1px; width: 100%; font-size: 12px;}
+#tStat td, #tStat th {padding: 0px 1px;}
+#tStat .c1 {width:130px; text-align: left;font-weight: normal}
+#tStat .c211 {text-align: right; padding-right: 95px;}
+#tStat .c212 {text-align: right; padding-right: 45px;}
+#tStat .c22 {text-align: right; padding-right: 30px;}
+#tStat .c23 {text-align: right; padding-right: 80px;}
+#tStat .c24 {text-align: right; padding-right: 50px;}
+#tBalken {margin: auto;}
+#tBalken td {padding: 4px;}
+.bar {
+width: 180px;
+background-position: center;
+background-image: url(../html/de/images/progress_back.gif);
+background-repeat: no-repeat;
+vertical-align: middle;
+}
+.Buttonlink {text-align: right; padding-top: 10px;}
+.Pushbutton180 {color: black; width: 190px;}
+-->
+</style>
+<script type="text/javascript">
+<? include ../html/de/js/jsl.js ?>
+var low2mb = 1000000;
+var low2kb = 1000;
+var high2mb = 4295;
+//var low2mb = 1048576;
+//var high2mb = 4096;
+var g_now = new Date();
+var g_mldReset = '{?de.internet.inetstat.js:30?}';
+var g_mldCritTim = '{?de.internet.inetstat.js:35?} ';
+var g_mldCritVol = 'Your Downloadvolume of %1%Anzahl% MB will be reached on %2%Datum%';
+var g_mldMaxVol = 'Your Downladvolume of  %1%Nummer% MB is reached. ';
+var g_mldMaxTim = '{?de.internet.inetstat.js:40?} ';
+var g_txt_isTage = "{?de.internet.inetstat.js:45?}"
+var g_txt_Stunden = " {?de.internet.inetstat.js:50?} ";
+var g_txt_Stunde = " {?de.internet.inetstat.js:55?} ";
+var g_txt_Minute = " {?de.internet.inetstat.js:60?}";
+var g_txt_n = "{?de.internet.inetstat.js:9901?}";
+var g_txtUnd = "{?de.internet.inetstat.js:70?} ";
+function uiDoOnLoad() {
+document.title = "{?de.internet.inetstat.js:75?}";
+var timeknown = "<? query inetstat:status/timeknown ?>";
+var budget = "<? query connection0:settings/Budget/Enabled ?>";
+<? setvariable var:settimeknown <? query inetstat:status/timeknown ?> ?>
+if (timeknown != "1") {
+jslDisplay("BudgetNoTime", true);
+} else {
+if (budget != "1") {
+jslDisplay("BudgetNoTarif", true);
+} else {
+jslDisplay("BudgetTarif", true);
+}
+}
+<? if eq $var:settimeknown 1 `
+GetBoxDate();
+var time = <? query inetstat:status/Today/PhyConnTimeOutgoing ?>;
+var inh = <? query inetstat:status/Today/BytesReceivedHigh ?>;
+var inl = <? query inetstat:status/Today/BytesReceivedLow ?>;
+var outh = <? query inetstat:status/Today/BytesSentHigh ?>;
+var outl = <? query inetstat:status/Today/BytesSentLow ?>;
+var vinh = <? query inetstat:status/Today/VoIPBytesReceivedHigh ?>;
+var vinl = <? query inetstat:status/Today/VoIPBytesReceivedLow ?>;
+var vouth = <? query inetstat:status/Today/VoIPBytesSentHigh ?>;
+var voutl = <? query inetstat:status/Today/VoIPBytesSentLow ?>;
+SetRow("Today",time,inh,inl,outh,outl,vinh,vinl,vouth,voutl);
+time = <? query inetstat:status/Yesterday/PhyConnTimeOutgoing ?>;
+inh = <? query inetstat:status/Yesterday/BytesReceivedHigh ?>;
+inl = <? query inetstat:status/Yesterday/BytesReceivedLow ?>;
+outh = <? query inetstat:status/Yesterday/BytesSentHigh ?>;
+outl = <? query inetstat:status/Yesterday/BytesSentLow ?>;
+vinh = <? query inetstat:status/Yesterday/VoIPBytesReceivedHigh ?>;
+vinl = <? query inetstat:status/Yesterday/VoIPBytesReceivedLow ?>;
+vouth = <? query inetstat:status/Yesterday/VoIPBytesSentHigh ?>;
+voutl = <? query inetstat:status/Yesterday/VoIPBytesSentLow ?>;
+SetRow("Yesterday",time,inh,inl,outh,outl,vinh,vinl,vouth,voutl);
+time = <? query inetstat:status/ThisWeek/PhyConnTimeOutgoing ?>;
+inh = <? query inetstat:status/ThisWeek/BytesReceivedHigh ?>;
+inl = <? query inetstat:status/ThisWeek/BytesReceivedLow ?>;
+outh = <? query inetstat:status/ThisWeek/BytesSentHigh ?>;
+outl = <? query inetstat:status/ThisWeek/BytesSentLow ?>;
+vinh = <? query inetstat:status/ThisWeek/VoIPBytesReceivedHigh ?>;
+vinl = <? query inetstat:status/ThisWeek/VoIPBytesReceivedLow ?>;
+vouth = <? query inetstat:status/ThisWeek/VoIPBytesSentHigh ?>;
+voutl = <? query inetstat:status/ThisWeek/VoIPBytesSentLow ?>;
+SetRow("ThisWeek",time,inh,inl,outh,outl,vinh,vinl,vouth,voutl);
+time = <? query inetstat:status/ThisMonth/PhyConnTimeOutgoing ?>;
+inh = <? query inetstat:status/ThisMonth/BytesReceivedHigh ?>;
+inl = <? query inetstat:status/ThisMonth/BytesReceivedLow ?>;
+outh = <? query inetstat:status/ThisMonth/BytesSentHigh ?>;
+outl = <? query inetstat:status/ThisMonth/BytesSentLow ?>;
+vinh = <? query inetstat:status/ThisMonth/VoIPBytesReceivedHigh ?>;
+vinl = <? query inetstat:status/ThisMonth/VoIPBytesReceivedLow ?>;
+vouth = <? query inetstat:status/ThisMonth/VoIPBytesSentHigh ?>;
+voutl = <? query inetstat:status/ThisMonth/VoIPBytesSentLow ?>;
+SetRow("ThisMonth",time,inh,inl,outh,outl,vinh,vinl,vouth,voutl);
+time = <? query inetstat:status/LastMonth/PhyConnTimeOutgoing ?>;
+inh = <? query inetstat:status/LastMonth/BytesReceivedHigh ?>;
+inl = <? query inetstat:status/LastMonth/BytesReceivedLow ?>;
+outh = <? query inetstat:status/LastMonth/BytesSentHigh ?>;
+outl = <? query inetstat:status/LastMonth/BytesSentLow ?>;
+vinh = <? query inetstat:status/LastMonth/VoIPBytesReceivedHigh ?>;
+vinl = <? query inetstat:status/LastMonth/VoIPBytesReceivedLow ?>;
+vouth = <? query inetstat:status/LastMonth/VoIPBytesSentHigh ?>;
+voutl = <? query inetstat:status/LastMonth/VoIPBytesSentLow ?>;
+SetRow("LastMonth",time,inh,inl,outh,outl,vinh,vinl,vouth,voutl);
+` ?>
+<? if eq <? query connection0:settings/Budget/Enabled ?> 1 `
+var maxw = 174;
+// heutiges Datum
+var heuteTag = g_now.getDate();
+var heuteMonat = g_now.getMonth() + 1;
+var heuteJahr = g_now.getFullYear();
+// an dieser Stelle ist das heutige Datum korrekt eingestellt
+// Startdatum des Abrechnungsmonats ermitteln
+var startTag = <? query box:settings/Statistic/StartOfMonth ?>;
+if (heuteTag < startTag)
+{
+// der Start-Tag befindet sich im letzten Monat
+var startMonat = heuteMonat - 1;
+if (startMonat < 1)
+{
+startMonat = 12;
+var startJahr = heuteJahr - 1;
+}
+else
+{
+var startJahr = heuteJahr;
+}
+}
+else
+{
+// der Start-Tag befindet sich in diesem Monat
+var startMonat = heuteMonat;
+var startJahr = heuteJahr;
+}
+// ist das Startdatum korrekt?
+// Wenn Starttag der 31./30./29. ist, startet die Berechnung am 1. des Folgemonats
+if (startTag > DaysInMonth(startMonat,startJahr))
+{
+startTag = 1;
+startMonat += 1;
+// keine Korrektur von startJahr, weil Dezember immer 31 (max) Tage hat
+// also dieser Zweig für startMonat nie betreten wird
+}
+// an dieser Stelle ist das Start-Datum korrekt eingestellt
+// Enddatum des Abrechnungsmonats ermitteln
+var endMonat = startMonat + 1;
+var endJahr = startJahr;
+// Jahreswechsel?
+if (endMonat > 12)
+{
+endMonat = 1;
+endJahr += 1;
+}
+var endTag = startTag - 1;
+// wenn Starttag der 1. ist
+if (endTag < 1)
+{
+endMonat -= 1;
+if (endMonat < 1)
+{
+// für Startdatum 1.12.
+endMonat = 12;
+endJahr -= 1;
+}
+endTag = DaysInMonth(endMonat,endJahr);
+}
+// Spezialfall für Monate mit weniger als 31 Tagen
+if (endTag > DaysInMonth(endMonat,endJahr))
+{
+endTag = DaysInMonth(endMonat,endJahr);
+}
+// an dieser Stelle ist das End-Datum korrekt eingestellt
+// Gesamtzahl Tage im Abrechnungsmonat
+if (endTag < startTag)
+var maxTage = DaysInMonth(startMonat,startJahr) - startTag + endTag + 1;
+else
+// Spezialfall startTag=1
+var maxTage = DaysInMonth(startMonat,startJahr);
+// Zahl der bisher im Abrechnungsmonat verstrichenen Tage
+if (startTag <= heuteTag)
+var istTage = heuteTag - startTag + 1;
+else
+var istTage = heuteTag + ( DaysInMonth(startMonat,startJahr) - startTag ) + 1;
+<? if eq $var:settimeknown 1 `
+// Balken für den Abrechnungszeitraum setzen
+document.getElementById("uiViewImageTime").width = Math.ceil(Math.min(maxw,(istTage/maxTage)*maxw));
+SetSpanText("uiViewLabelTime", jslPrintf(g_txt_isTage,istTage));
+// Zeitbalken
+var max = Math.ceil(<? query connection0:settings/Budget/ConnectionTime ?>/60);
+var maxh = Math.ceil(max/60);
+var cur = Math.ceil(<? query inetstat:status/ThisMonth/PhyConnTimeOutgoing ?>/60);
+// Anzeige zusammen bauen
+var curh = "";
+var hstring = g_txt_Stunden;
+// mindestens eine Stunde?
+if (cur>59 || cur==0) curh = Math.floor(cur/60);
+if (curh=="1") hstring = g_txt_Stunde;
+// Minuten
+var curm = Math.ceil(cur%60);
+if (curh != "" && curm > 0) hstring += g_txtUnd;
+if (curm>0)
+curh += ((curh!="")?hstring:"")+curm+g_txt_Minute+((curm!=1)?g_txt_n:"");
+var what = "{?de.internet.inetstat.js:2068?}";
+var tipp = "";
+if (cur<max) tipp = g_mldCritTim;
+else tipp = g_mldMaxTim;
+if (max==0)
+{
+// Volumenbalken
+max = highlow2byte(<? query connection0:settings/Budget/VolumeHigh ?>,<? query connection0:settings/Budget/VolumeLow ?>);
+maxh = byte2mb(max);
+cur = highlow2byte(<? query inetstat:status/ThisMonth/BytesReceivedHigh ?>,<? query inetstat:status/ThisMonth/BytesReceivedLow ?>);
+cur += highlow2byte(<? query inetstat:status/ThisMonth/BytesSentHigh ?>,<? query inetstat:status/ThisMonth/BytesSentLow ?>);
+curh = byte2mb(cur);
+what = "MB";
+if (cur<max) tipp = g_mldCritVol;
+else tipp = g_mldMaxVol;
+}
+// Verbrauchsbalken setzen
+document.getElementById("uiViewImageValue").width = Math.ceil(Math.min(maxw,(cur/max)*maxw));
+SetSpanText("uiViewLabelValue", jslPrintf("{?de.internet.inetstat.js:2729?}",curh,maxh,what));
+// Durchschnittsverbrauch über Tarif?
+if ((istTage/maxTage) < (cur/max))
+{
+document.valuebar.src = "/html/de/images/rot.gif";
+jslDisplay("uiViewWarning",true);
+// kritisches Datum berechnen
+var effTage = Math.floor((max/cur)*istTage);
+var kritTag = startTag;
+var kritMonat = startMonat;
+var kritJahr = startJahr;
+if (startTag + effTage > DaysInMonth(startMonat,startJahr))
+{
+// kritisches Datum im Monat nach dem Startzeitpunkt
+kritMonat += 1;
+if (kritMonat > 12)
+{
+kritMonat = 1;
+kritJahr += 1;
+}
+kritTag = effTage - (DaysInMonth(startMonat,startJahr) - startTag);
+}
+else
+{
+// kritisches Datum im selben Monat, wie der Startzeitpunkt
+kritTag = startTag + effTage;
+}
+// kritisches Datum einsetzen
+if (cur<max) tipp = jslPrintf(tipp,maxh,kritTag+"."+kritMonat+"."+kritJahr);
+else tipp = jslPrintf(tipp,maxh);
+// Texte setzen
+jslSetSpanText("uiViewTipp",tipp);
+g_EndsInfo="{?de.internet.inetstat.js:9450?}";
+szDateInfo=jslPrintf("{?de.internet.inetstat.js:5374?}",endTag,endMonat,endJahr);
+jslSetSpanText("uiViewEndDate",jslPrintf(g_EndsInfo,szDateInfo));
+}
+` ?>
+` ?>
+jslZebrastreifen("tStat");
+switch (jslGetValue("uiPostTab")) {
+case "1": Tabs(1); break;
+case "0": Tabs(0); break;
+default: Tabs(budget=="1" ? 0:1); break;
+}
+}
+function SetRow(name,time,inh,inl,outh,outl,vinh,vinl,vouth,voutl) {
+SetSpanText("span"+name+"Time",MakeTimeStr(time));
+SetSpanText("span"+name+"In",MakeVolStr(inh,inl));
+SetSpanText("span"+name+"Out",MakeVolStr(outh,outl));
+SetSpanText("span"+name+"Sum",MakeVolSumStr(inh,outh,inl,outl));
+}
+function uiDoRefresh() {
+jslGoTo("","inetstat");
+}
+function uiDoHelp() {
+if (jslGetValue("uiPostTab") == "1") {
+jslPopHelp("hilfe_inetstat");
+} else {
+jslPopHelp("hilfe_tarifuebersicht");
+}
+}
+//var g_Kilo = 1024;
+var g_Kilo = 1000;
+//var g_Mega = 1048576; // 1024*1024;
+var g_Mega = 1000000;
+var g_Shift32 = 4294967296;
+function mb2byte(mb){ return Math.floor(g_Mega*mb); }
+function byte2mb(b){ return Math.round(b/g_Mega);}
+function byte2low(b){ return b%g_Shift32; }
+function byte2high(b){ return Math.floor(b/g_Shift32); }
+function highlow2byte(h,l){ return h*g_Shift32+l; }
+function byte2kb(b){ return Math.floor(b/g_Kilo); }
+function MakeVolStr(high,low) {
+var ret = 0;
+var postfix = " {?de.internet.inetstat.js:140?}";
+var bytes = highlow2byte(high,low);
+ret = byte2mb(bytes);
+if (ret < 1)
+{
+ret = byte2kb(bytes);
+postfix = " kB";
+}
+return ret+postfix;
+}
+function MakeVolSumStr(high_in,high_out,low_in,low_out) {
+var ret = 0;
+var postfix = " {?de.internet.inetstat.js:145?}";
+var bytes = highlow2byte(high_in,low_in) + highlow2byte(high_out,low_out);
+ret = byte2mb(bytes);
+if (ret < 1)
+{
+ret = byte2kb(bytes);
+postfix = "{?de.internet.inetstat.js:3565?}";
+}
+return ret+postfix;
+}
+function Int2Str(val) {
+var str = "";
+if (val<10) str = "0";
+return str+val;
+}
+function MakeTimeStr(sec) {
+var ret = "";
+sec=Math.ceil(sec/60);
+ret = Int2Str(sec%60);
+sec=Math.floor(sec/60);
+ret = sec+":"+ret;
+return ret;
+}
+function uiDoReset() {
+if (confirm(g_mldReset) == true) {
+jslSetValue("uiPostStatReset","1");
+jslFormSubmitEx("", "inetstat", "inetstat");
+}
+}
+function uiDoBudget() {
+jslFormSubmitEx("", "budget", "inetstat");
+}
+function DaysInMonth(month,year) {
+var ret = 31;
+if (month=="4" || month=="6" || month=="9" || month=="11") ret=30;
+if (month=="2") {
+ret=28;
+if (year%4==0) {
+ret=29;
+if (year%100==0)
+ret=28;
+}
+}
+return ret;
+}
+function GetBoxDate() {
+var s = "<? query box:status/localtime ?>";
+if (s.length>=19) {
+g_now = new Date(parseInt(s.substr(15,4),10), parseInt(s.substr(12,2),10)-1, parseInt(s.substr(9,2),10));
+}
+}
+function Tabs (n) {
+jslDisplay("uiBudget", n==0);
+jslDisplay("uiCounter", n==1);
+jslSetValue("uiPostTab", n);
+}
+function uiDoNutzung() {
+jslGoTo("", "userlist");
+}
+</script>
