var calc_style = 'orv'
var page = 1
var pagelast = 0
var resultcount = 0

function initializePortal()
{
    var el = ctl('in_ammount')

    formatValue(el)
    showDates(2, 0)
    showInsurants(null)
    showSmoker(1)
    showSmoker(2)

    if (ctl('pers_cnt').value == 1)
    {
        var min          = new Date(ctl('in_startdate_y').value, ctl('in_startdate_m').value - 1, ctl('in_startdate_d').value)
        var minYear      = min.getFullYear()
        var minMonth     = min.getMonth()
        var minDate      = min.getDate()

        var max          = new Date()
        var maxYear      = max.getFullYear()
        var maxMonth     = max.getMonth()
        var maxDate      = max.getDate()

        val = ctl('owner_birth')
        mon = ctl('owner_birth_m')
        mon.minDate = new Date(minYear-66, minMonth, minDate)
        mon.maxDate = new Date(maxYear-18, maxMonth, maxDate)
        getDate(mon, val)

        showOwner()
        showOwnerAddress()
    }

    if (eStage == 3)
    {
        pagecount = ctl('page_count')
        if (pagecount) {
            resultcount = parseInt(ctl('page_count').innerHTML)
        } else {
            resultcount = 0
        }
        pagelast = resultcount / pageresults

        if (pagelast > parseInt(pagelast)) pagelast = parseInt(pagelast) + 1

        clickPage(1)
    }
}

function validate(curStage, newStage)
{
    var se = ''
    var per = parseInt(ctl('in_period').value)

    if (curStage == 0)
    {
        var ai = ctl('in_ammount')
        if (!(validateNum(ai.value, 1000, 1000000))) se += getErr(1)
        if (!(validateNum(per, 1, 60))) se += getErr(2)
    }

    if (curStage == 1 || (tabsPast[1] && newStage == 2))
    {
        var sd= new Date(ctl('in_startdate_y').value,
                         ctl('in_startdate_m').value - 1,
                         ctl('in_startdate_d').value)

        var v = new Date(ctl('pers1_birth_y').value,
                         ctl('pers1_birth_m').value - 1,
                         ctl('pers1_birth_d').value)
        var f = ageByDate(sd, v)

        if (!(validateNum(f, 18, 66, 1)))
        {
            se += getErr(3)
        }
          else
        {
            if (!(validateNum(f, 0, 76 - per, 1))) se += getErr(23)
        }

        if (!(validateNum(ctl('pers1_length').value, 50, 250, 1)))      se += getErr(20)
        if (!(validateNum(ctl('pers1_weight').value, 40, 240, 1)))      se += getErr(21)
        if (!(validateNum(ctl('pers1_smokercount').value, 0, 50, 1)))   se += getErr(22)

        if (ctl('pers_cnt').value != 1)
        {
            if (!(validateNum(ctl('pers2_length').value, 50, 250, 1)))      se += getErr(20)
            if (!(validateNum(ctl('pers2_weight').value, 40, 240, 1)))      se += getErr(21)
            if (!(validateNum(ctl('pers2_smokercount').value, 1, 50, 1)))   se += getErr(22)
    
            var v = new Date(ctl('pers2_birth_y').value,
                             ctl('pers2_birth_m').value - 1,
                             ctl('pers2_birth_d').value)
            var f = ageByDate(sd, v)
    
            if (!validateNum(f, 18, 66, 1)) se += getErr(3)
        }
    }

    switch(curStage)
    {
        case 3:
            if (getProductSel() == null) se += getErr(16)
            break

        case 4:
            if (getProductSel() == null) se += getErr(16)

            var cnt  = getPersons()
            var pers = (cnt == 1) ? 'Verzekerde': '1e verzekerde'
            var mail = (!ctl('pers1_mail').value)

            if (mail) se += getErr(5)

            se += validateNull('pers_street', 6)
            se += validateNull('pers_streetnr', 7)
            se0 = validateNull('pers_zip', 8)
            if (se0 == '')
            {
                if (!chkPostcode(ctl('pers_zip').value)) se += getErr(17)
            }
              else
            {
                se += se0
            }
            se += validateNull('pers_city', 9)
            se += validateNull('pers1_tel', 12)

            var se2 = ''

            for (i = 1; i < ((cnt == 2) ? 3 : 1); i++)
            {
                pers = (cnt == 2) ? ((i == 1) ? '1e verzekerde' : '2e verzekerde') : 'Verzekerde'
                se += validateNull('pers' + i + '_first', 10, pers)
                se += validateNull('pers' + i + '_last', 11, pers)
                se2 = validateNull('pers2_tel', 12, pers) }

            var se1 = validateNull('pers1_tel', 12, pers)
            if (se1 != '' && se2 != '') se += se1
            break
    }

    if (se != '') alert('Niet alle velden bevatten geldige waarden:\n' + se);
    return se == ''
}

function setProductSel()
{
    var i = getProductSel()
    if (i == 0) return

    with (cp[i])
    {
        ctl('sel_price').value          = price
        ctl('sel_pricem').value         = meanprice
        ctl('sel_ven').value            = db_vendor
        ctl('sel_venid').value          = db_vendorid
        ctl('sel_prod').value           = db_product
        ctl('sel_prodid').value         = id
        ctl('sel_prodkey').value        = key
        ctl('sel_quality').value        = db_quality
        ctl('sel_start').value          = startdate
        ctl('sel_payperiod').value      = payperiod / 12
        ctl('shw_vendor').innerHTML     = db_vendor
        ctl('shw_product').innerHTML    = db_product
        ctl('shw_price').innerHTML      = '€ ' + formatFloat(price, 1, 1, 1) + ((meanprice>0)?' (gemiddeld: € ' + formatFloat(meanprice, 1, 1, 1) + ')':'')
        ctl('shw_startdate').innerHTML  = startdate.replace(/[/]/g, '-')
        ctl('shw_payperiod').innerHTML  = getPayPeriodStr(payperiod)
        
        ctl('vendor_costall').value     = vendor_costall
        ctl('vendor_cost').value        = vendor_cost
        ctl('vendor_prefin').value      = vendor_prefin
        ctl('vendor_continue').value    = vendor_continue
        ctl('sales_start').value        = sales_start
        ctl('sales_continue').value     = sales_continue

        ctl('nhp_options').style.display = (id == '42' || id == '43' || id == '75' || id == '76') ? 'block' : 'none'
        ctl('fees').style.display = (id == '43' || id == '44' || id == '75' || id == '76') ? 'block' : 'none'
        try
        {
            setProductSelPortal()
        }
        catch (e) { }
        try
        {
            setTerminalIllness(ctl('option_illness'))
        }
        catch (e) { }
    }
}

function loadProduct(key)
{
    var price = (cp[key].meanprice != '0.00') ? formatFloat(cp[key].meanprice, 1, 1, 2) + ' (gemiddeld)' : formatFloat(cp[key].price, 1, 1, 2)
    var speclist = ctl('prod_spec')
    var fee = parseFloat(cp[key].db_prov_tp_eenmalig) + parseFloat(cp[key].db_prov_io_eenmalig)

    ctl('prod_quality').style.background= 'url(/static/img/rekenmachines/' + calc_style + '_stars' + cp[key].db_quality + '.gif) no-repeat'
    ctl('prod_vendor').innerHTML = cp[key].db_vendor
    ctl('prod_name').innerHTML = cp[key].db_product
    ctl('prod_price').innerHTML = '€ ' + price

    var elFee = ctl('prod_pricefee').parentNode
    var elTotal = ctl('prod_pricetotal').parentNode

    if (fee == 0)
    {
        elFee.style.display = 'none'
        elTotal.cells[0].innerHTML = 'Totale premie:'
    }
     else
    {
        try
        {
            elFee.style.display = 'table-row'
        }
          catch(e)
        {
            elFee.style.display = 'block'
        }
        elTotal.cells[0].innerHTML = 'Totale premie<br />(inclusief bemiddelingsfee):'
        ctl('prod_pricefee').innerHTML  = '€ ' + formatFloat(fee, 1, 1, 1)
    }
    ctl('prod_pricetotal').innerHTML    = '€ ' + formatFloat(cp[key].totalprice, 1, 1, 2)

    while (speclist.childNodes.length)
    {
        speclist.removeChild(speclist.childNodes[0])
    }

    for (var j = 1;j < 8; j++)
    {
        if (cp[key]['db_special' + j].length)
        {
            var li = document.createElement('li')
            var sp = document.createElement('span')

            sp.innerHTML = cp[key]['db_special' + j]
            li.appendChild(sp)
            speclist.appendChild(li)
        }
    }
    ctl('prod_periodmin').innerHTML     = concatNull('', cp[key].db_periodmin, ' jaar', 'n.v.t.')
    ctl('prod_periodmax').innerHTML     = concatNull('', cp[key].db_periodmax, ' jaar', 'n.v.t.')
    ctl('prod_ammountmin').innerHTML    = concatNull('€ ', formatFloat(cp[key].db_ammountmin,1,1,1), '', 'n.v.t.')
    ctl('prod_ammountmax').innerHTML    = concatNull('€ ', formatFloat(cp[key].db_ammountmax,1,1,1), '', 'n.v.t.')
    ctl('prod_pricemin').innerHTML      = concatNull('€ ', formatFloat(cp[key].db_pricemonth,1,1,1), '', 'n.v.t.')
    ctl('prod_payperiod').innerHTML     = getPayPeriodStr(cp[key].payperiod)

    if (ctl('prod_period')) ctl('prod_period').innerHTML = cp.in_period + ' jaar'

    var f = 0, l = 0, t = '', rgn = ''
    var cont = ctl('health')

    for (i = cont.childNodes.length; i > 0; i--)
    {
        cont.removeChild(cont.firstChild)
    }


    for (i = 1; i <= ((cp[key].pers2) ? 2 : 1); i++)
    {
        if (i == 1)
        {
            var prod = cp[key].pers1
        }
          else
        {
            var prod = cp[key].pers2
        }
        var div = document.createElement('div')
        div.className = 'inp_head'
        div.innerHTML = 'Gezondheid'
        if (cp[key].pers2)
        {
            div.innerHTML = 'Gezondheid' + ((i == 1) ? ' eerste' : ' tweede') + ' verzekerde'
        }
        cont.appendChild(div);
        
        var tbl = document.createElement('table')
        cont.appendChild(tbl);
    
        for (var j = 0; j < 4; j++)
        {
            if (!prod['db_health' + j]) continue
    
            l = prod['db_health' + j + 'a']
            f = prod['db_health' + j + 'b']
            
            if (f > 0)
            {
                rgn = '€ ' + formatFloat(l, 1, 1, 1)
               + ' t/m € ' + formatFloat(f, 1, 1, 1)
            }
              else
            {
                rgn = (l > 0) ? '€ ' + formatFloat(l, 1, 1, 1) + ' en hoger' : ''
            }
            
            var tr = tbl.insertRow(-1)
            
            var td = tr.insertCell(-1)
            td.innerHTML = prod['db_health' + j]
            td.className = 'prod_lbl'
            
            var td = tr.insertCell(-1)
            td.innerHTML = rgn
            td.className = 'prod_box'
    
            l = f
        }
    }

    ctl('prodlist_start').innerHTML = ''
    ctl('prodlist_close').innerHTML = ''
    ctl('prodlist_price').innerHTML = ''

    showStage(null, 6, 0)

    var ss   = '', sc = '', sp = ''
    var hg   = ctl('productinfo').offsetHeight
    var disp = (cp[key].pricelist || cp[key].depotlist) ? 'block' : 'none'

    if (disp)
    {
        ctl('prodlist_cap').innerHTML = (cp[key].pricelist) ? 'Premie verloop' : 'Verloop premiedepot';
        ctl('prodlist_lbl').innerHTML = (cp[key].pricelist) ? 'Premie' : 'Waarde';

        if (cp[key].pricelist)
        {
            ctl('prodlist_col1').innerHTML = 'Van'
            ctl('prodlist_col2').innerHTML = 'Tot'
        }
          else
        {
            ctl('prodlist_col1').innerHTML = 'Datum'
            ctl('prodlist_col2').innerHTML = ''
        }
    }

    ctl('prodlist_box').style.height = hg + 'px'
    ctl('prodlist_box').style.display = disp
    ctl('prodlist_cap').style.display = disp
    ctl('prodlist_lbls').style.display = disp

    if (cp[key].pricelist)
    {
        for (var j = 0; j < cp[key].pricelist.length; j++)
        {
            ss += cp[key].pricelist[j][0] + '<br />'
            sc += cp[key].pricelist[j][1] + '<br />'
            sp += '€' + formatFloat(cp[key].pricelist[j][2], 1, 1, 2) + '<br />'
        }
    }
      else if (cp[key].depotlist)
    {
        for (var j = 0; j < cp[key].depotlist.length; j++)
        {
            ss += cp[key].depotlist[j][0] + '<br />'
            sc += cp[key].depotlist[j][1] + '<br />'
            sp += '€' + formatFloat(cp[key].depotlist[j][2], 1, 1, 2) + '<br />'
        }
    }
    ctl('prodlist_start').innerHTML = ss
    ctl('prodlist_close').innerHTML = (cp[key].depotlist) ? '&nbsp;' : sc
    ctl('prodlist_price').innerHTML = sp
}

function showInsurants(el)
{
    if (el) change(el)
    var lbl = ctl('pers1_cap')

    if (getPersons() == 1)
    {
        ctl('pers2').style.visibility  = 'hidden'
        lbl.innerHTML = 'Gegevens verzekerde'
    }
      else
    {
        ctl('pers2').style.visibility  = 'visible'
        lbl.innerHTML = 'Gegevens eerste verzekerde'
    }
}

function showSmoker(pers)
{
    var els = document.getElementsByName('pers' + pers + '_smoker')

    for (var i = 0; i < els.length; i++)
    {
        if (els[i].checked) hitSmoker(els[i].parentNode)
    }
}

function showOwner()
{
    var b = 0
    var els = document.getElementsByName('owner')

    for (var i = 0; i < 2; i++)
    {
        if (els[i].checked)
        {
            b = i
            break
        }
    }
    ctl('ownerbag').style.display = (b) ? 'block' : 'none'
}

function showOwnerAddress()
{
    var b = 0
    var els = document.getElementsByName('owner_address')

    for (var i = 0; i < 2; i++)
    {
        if (els[i].checked)
        {
            b = i
            break
        }
    }
    ctl('owner_addr1').style.display = (b) ? 'block' : 'none'
    ctl('owner_addr2').style.display = (b) ? 'block' : 'none'
}

function showGender(el)
{
    if (el) change(el)
    var i = el.name.substr(4, 1)

    var elLength = document.getElementById('pers' + i + '_length')
    var elWeight = document.getElementById('pers' + i + '_weight')

    if(el.value == 'M')
    {
        elLength.value = 185
        elWeight.value = 80
    }
      else
    {
        elLength.value = 170
        elWeight.value = 65
    }
}

// R E Q U E S T   L I N K S

function requestOffer()
{
    showStage(null, 4, 0)
}

function getPayPeriodStr(payperiod)
{
    if (payperiod == 0)  return 'Eenmalig'
    if (payperiod >= 15) return Math.round(payperiod / 12) + ' jaar'

    years  = parseInt(payperiod)
    months = Math.round(12 * (payperiod - years))
    months = (months > 0) ? (' en ' + months + ' maand' + ((months != 1) ? 'en' : '')) : ''

    return years + ' jaar' + months
}

function chkTerminalIllness(el)
{
    var div = el.parentNode
    var span = div.childNodes[1]
    el = div.childNodes[0]
    hitCheck(span, 1)
    setTerminalIllness(el)
}

function setTerminalIllness(el)
{
    var id = ctl('sel_prodid').value

    if (!(id == '42' || id == '43')) return

    if (!el.checked)
    {
        ctl('shw_price').innerHTML = '€ ' + ctl('sel_price').value
        span.innerHTML = 'Dekking bij terminale ziekte (3% premieverhoging)'
    }
      else
    {
        price = ctl('sel_price').value
        price = price.replace('.', '')
        price = price.replace(',', '.')
        price = Math.round(parseFloat(price) * 1.03 * 100) / 100
        ctl('shw_price').innerHTML = '€ ' + formatFloat(price, 1, 1, 1) + ' (incl. 3% verhoging)'
        span.innerHTML = 'Dekking bij terminale ziekte (premie van € ' + ctl('sel_price').value + ' met 3% verhoogd naar € ' + formatFloat(price, 1, 1, 1) + ')'
    }
}
