
function calculateHCP(oForm)
{
    var form = $('HCPCF');
    
    // calculate HCP Kategorija
    writeHCPCategory(getHCPCategory(form));
    // skaiciuojam buferine zona iki dali;
    writeBuferineZona2(getBuferineZona2(form));
    // skaiciuojam buferine zona nuo dali;
    writeBuferineZona1(getBuferineZona1(form));
    // skaiciuojam demeni
    writeDemuo(getDemuo(form));
    // skaiciuojam daugikli
    writeDaugiklis(getDaugiklis(form));
    // skaiciuojam zaidimo HCP
    writeZaidimoHCP(getZaidimoHCP(form));
    calculateHoles(form);
    return false;
}
//------------------------------------------------------------------------------
function getHCPCategory(form)
{
    var fHCP = form['hcp'];
    if(!isNumber($F(fHCP))) return '-';
    else if($F(fHCP)<4.5) return 1;
    else if($F(fHCP)<11.5) return 2;
    else if($F(fHCP)<18.5) return 3;
    else if($F(fHCP)<26.5) return 4;
    else return 5;
}

function writeHCPCategory(value)
{
    $('hcp_category').update(value);
}
//------------------------------------------------------------------------------
function getBuferineZona2(form)
{
    var fHCP = form['hcp'];
    if(!isNumber($F(fHCP))) return '-';
    else return 36;
}

function writeBuferineZona2(value)
{
    $('buferine_zona_2').update(value);
}
//------------------------------------------------------------------------------
function getBuferineZona1(form)
{
    var fHCP = form['hcp'];
    if(!isNumber($F(fHCP))) return '-';
    else return getBuferineZona2(form)-getHCPCategory(form);
}

function writeBuferineZona1(value)
{
    $('buferine_zona_1').update(value);
}
//------------------------------------------------------------------------------
function getDemuo(form)
{
    var fHCP = form['hcp'];
    if(!isNumber($F(fHCP))) return '-';
    else if(getHCPCategory(form)==5) return 0.2;
    else return 0.1;
}

function writeDemuo(value)
{
    $('demuo').update(value);
}
//------------------------------------------------------------------------------
function getDaugiklis(form)
{
    var fHCP = form['hcp'];
    if(!isNumber($F(fHCP))) return '-';
    else return getHCPCategory(form)/10;
}

function writeDaugiklis(value)
{
    $('daugiklis').update(value);
}
//------------------------------------------------------------------------------
function getZaidimoHCP(form)
{
    var fHCP = form['hcp'];
    var lytis =  $RF(form, 'sex');;
    var SR = form['asr['+lytis+'][sr]'];
    var CR = form['asr['+lytis+'][cr]'];
    var PARA = form['asr['+lytis+'][para]'];
    if(!isNumber($F(fHCP))) return '-';
    else return ($F(fHCP)*($F(SR)/113)+($F(CR)-$F(PARA))).round();
    return 0;
}
function writeZaidimoHCP(value)
{
    $('zaidimoHCP').update(value);
}
//------------------------------------------------------------------------------
function calculateHoles(form)
{
    var fHCP = form['hcp'];
    var K1=0; if(isNumber($F(fHCP))) K1 = (getZaidimoHCP(form)/18).floor();
    var K2=0; if(isNumber($F(fHCP))) K2 = getZaidimoHCP(form)-K1*18;
    var sum19=0;
    var sum1018=0;
    var sum=0;

    var hsum19=0;
    var hsum1018=0;
    var hsum=0;
    
    var sfsum19=0;
    var sfsum1018=0;
    var sfsum=0;

    var stats = new Array(0,0,0,0,0,0,0);

    var calcHits = true;
    if(isNumber($F(fHCP))){
        for (i=1;i<=18;i=i+1) 
        {
            var lpar = parseInt($F(form['hole['+i+'][par]']));
            var si = parseInt($F(form['hole['+i+'][sindex]']));
            var lpz = 0;
            if(si<=K2) lpz = lpar + K1 + 1;
            else lpz = lpar + K1;
            $('laukoPARz'+i).update(lpz);
            if(i<10) sum19 = sum19+lpz;
            else sum1018 = sum1018+lpz;
            // sb taskai
            var hits = $F(form['hole['+i+'][hits]']);
            if(!isNumber(hits)) hits = 0;
            else hits=parseInt(hits);
            if(calcHits){
                if(hits>0)
                {
                    if(i<10) hsum19 = hsum19+hits;
                    else hsum1018 = hsum1018+hits;
                } else {
                    calcHits = false;
                    hsum19='-';
                    hsum1018='-';
                    hsum='-';
                }
            }
            var sb = 0;
            if(hits==0) sb = 0;
            else {
                if(lpz-hits<-1) sb = 0;
                else sb = lpz-hits+2;
            }
            $('sf'+i).update(sb);
            if(i<10) sfsum19 = sfsum19+sb;
            else sfsum1018 = sfsum1018+sb;
            
            stats[sb]=stats[sb]+1;
        }
        sum = sum19+sum1018;
        $('laukoPARzs19').update(sum19);
        $('laukoPARzs1018').update(sum1018);
        $('laukoPARzs').update(sum);
        
        if(isNumber(hsum19)&&isNumber(hsum1018)) hsum=hsum1018+hsum19; else hsum='-';
        $('hitss19').update(hsum19);
        $('hitss1018').update(hsum1018);
        $('hitss').update(hsum);
        
        sfsum = sfsum19+sfsum1018;
        $('sfs19').update(sfsum19);
        $('sfs1018').update(sfsum1018);
        $('sfs').update(sfsum);
        
        var newHCP=0;
        if(sfsum>=getBuferineZona1(form)&&sfsum<=getBuferineZona2(form)){
            newHCP = $F(fHCP);
        } else {
            if(sfsum<getBuferineZona1(form)){
                newHCP = parseFloat($F(fHCP))+parseFloat(getDemuo(form));
            } else {
                newHCP = $F(fHCP)-(sfsum-getBuferineZona2(form))*getDaugiklis(form);
            }
        }
        $('naujasHCP').update((10*newHCP).round()/10);
        //alert(stats.inspect());
        $('kondoras').update(stats[6]);
        $('albatrosas').update(stats[5]);
        $('erelis').update(stats[4]);
        $('paukstelis').update(stats[3]);
        $('parzaidejui').update(stats[2]);
        $('vaiduoklis').update(stats[1]);
        $('dvaiduoklis').update(stats[0]);
        $('sfsum').update(sfsum);
    }
}

//------------------------------------------------------------------------------
function isEmpty(s)
{
    return ((s == null) || (s.length == 0))
}

function isNumber(f)
{
    return (isFinite(f) && !isEmpty(f))
}

function $RF(el, radioGroup) {
    if($(el).type && $(el).type.toLowerCase() == 'radio') {
        var radioGroup = $(el).name;
        var el = $(el).form;
    } else if ($(el).tagName.toLowerCase() != 'form') {
        return false;
    }
 
    var checked = $(el).getInputs('radio', radioGroup).find(
        function(re) {return re.checked;}
    );
    return (checked) ? $F(checked) : null;
}

