function init ( ) {
            var wu    = document.getElementById ( 'iAnnualWaterUsage' )
        
            //var wf    = document.getElementById ( 'iAnnualWaterFee' )
            var keytrapper = function ( ) {
                if ( this.value.length >= 9 ) {
                    this.value    = this.value.substring ( 0, 9 )
                }
                calculate ( );
            }
        
        if (wu != null)
        {
            wu.onkeyup = keytrapper; 
        }
        
            //wf.onkeyup = keytrapper;
            calculate ( );
        }
        function calculate ( ) {
            var wu    = document.getElementById ( 'iAnnualWaterUsage' )
        
            //var wf    = document.getElementById ( 'iAnnualWaterFee' )
        
            var wuv;    
        
         if (wu != null)
        {
            wuv = Number ( formatToNumber ( wu.value ) )
        }
        
            if ( isNaN ( wuv ) ) {
            if (wu != null)
            {
                wu.value    = '0'
            }
                wuv            = 0;
            }
            var wfv    = 0//Number ( formatToNumber ( wf.value ) )
            if ( isNaN ( wfv ) ) {
                wf.value    = '0'
            }
            var sf            = document.getElementById ( 'iCalcStandardFee' );
        if (sf != null)
        {
            sf.innerHTML    = formatNumber ( wfv, 0, '.', ',' )
        }
            var s    = calculateForcasts ( 'Standard', wuv );
            var f20    = calculateForcasts ( 'Focus20', wuv );
            var fex    = calculateForcasts ( 'FocusExtra', wuv );
            var fpl    = calculateForcasts ( 'FocusPlus', wuv );
            var test    = Infinity;
            var tariff    = '';
            if ( s < test ) {
                test    = s;
                tariff    = 'Standard';
            }
            if ( f20 < test ) {
                test    = f20;
                tariff    = '<strong>focus</strong>20';
            }
            if ( fex < test ) {
                test    = fex;
                tariff    = '<strong>focus</strong>extra';
            }
            if ( fpl < test ) {
                test    = fpl;
                tariff    = '<strong>focus</strong>plus';
            }
            var wbt            = document.getElementById ( 'iWaterBillTotal' )
        
        if (wbt != null)
        {
            wbt.innerHTML    = formatNumber ( test, 0, '.', ',' );
        }
            var t            = document.getElementById ( 'iCalcTariff' )
        
        if (t != null)
        {
            t.innerHTML        = tariff;
        }
    }
        function formatNumber ( a, b, c, d ) {
            a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
            e = a + '';
            f = e.split('.');
            if(!f[0]) f[0] = '0';
            if(!f[1]) f[1] = '';
            if(f[1].length < b){
                g = f[1];
                for(i = f[1].length + 1; i <= b; i++) {
                    g += '0';
                }
                f[1] = g;
            }
            if(d != '' && f[0].length > 3) {
                h = f[0];
                f[0] = '';
                for(j = 3; j < h.length; j += 3) {
                    i = h.slice(h.length - j, h.length - j + 3);
                    f[0] = d + i +  f[0] + '';
                }
                j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
                f[0] = j + f[0];
            }
            c = (b <= 0) ? '': c;
            return f[0] + c + f[1];
        }
        function formatToNumber ( value ) {
            var n    = String ( value ).split ( ',' );
            if ( n.length ) {
                return Number ( n.join ( '' ) )
            }
            return Number ( value );
        }
        function calculateForcasts ( section, waterUsage ) {
            var fee                = document.getElementById ( 'iCalc' + section + 'Fee' );
            var tariff            = document.getElementById ( 'iCalc' + section + 'Tariff' );
            var forcast            = document.getElementById ( 'iCalc' + section + 'Forcast' );
        
        if (fee != null)
        {
            var feevalue        = Number ( formatToNumber ( fee.innerHTML )/*.split ( ',' ).join ( '' ) */);
        }
        
        if (tariff != null)
        {
            var tariffvalue        = Number ( formatToNumber ( tariff.innerHTML )/*.split ( ',' ).join ( '' )*/ );
            }
        
        var charge            = Math.round ( feevalue + ( waterUsage * tariffvalue ) )
        
        if (forcast != null)
        {
            forcast.innerHTML    = formatNumber ( charge, 0, '.', ',' );
        }
        
            return charge;
        }
        addLoadEvent ( init );