﻿// JScript File
var bHours = 0;
var nbHours = 0;

function isDecimalTime(evt, elem)
{
    try
    {
        var charCode = (evt.which) ? evt.which : event.keyCode;
        if(( charCode == 9) && (elem.value.length == 0))
        {
            return true;
        }
        else
        {
            if (((charCode >= 48) && (charCode <=57)) || (charCode == 46) || (charCode == 9) || (charCode == 13))
            {
                var txt = elem.value + "" + String.fromCharCode(charCode);
                //var re = new RegExp("^([\d]{0,2})*(\.?[\d]{0,2})$");
                if( isNaN(txt) )
                {
                    return false;
                }
                else
                {
                    if( txt.length < 6 )
                    {
                        var val = eval(txt);
                        if(( val > -1 ) && (val <= 24 ))
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            else
            {
                return false;
            }
        }
    }
    catch(ex)
    {
        return false;
    }        
}

function getHourTotals(input, code, sub )
{
    var bTotal = (document.all.billTotal.value.length > 0) ? parseFloat( document.all.billTotal.value ) : 0;
    var nbTotal= (document.all.nbillTotal.value.length > 0) ? parseFloat( document.all.nbillTotal.value ) : 0;
    
    if( code == "B" )
    {
        getBillableHours(input, code, sub);
        bTotal = updateTotal(input,sub);
    }
    else
    {
        getNBillableHours(input, code, sub);
        nbTotal = updateTotal(input,sub);
    }
    
    document.all.billTotal.value = parseFloat( bTotal );
    document.all.nbillTotal.value = parseFloat( nbTotal );
    document.all.sheetTotal.value = parseFloat( bTotal + nbTotal );
}

function updateTotal(input, sub)
{
    var frm = input.form;
    var elems = frm.elements.length
    var total = 0 * 0;
    
    for( var i = 0; i < elems; i++)
    {
        var elem = frm.elements[i];
        
        if( ( elem.tagName == "INPUT" ) && 
            ( elem.name.substring(elem.name.length - sub.length, elem.name.length )== sub ) && 
            ( elem.value.length > 0  ) )
            {
                total += parseFloat( elem.value );
            }
    }
    return total;
}


function getBillableHours(input, code, sub)
{    
    var billableHours = 0;
    var row = input.parentElement.parentElement;
    if( row.tagName == "TR" )
    {
        var cols = row.children.length
        for( var ctr = 0; ctr < cols; ctr++)
        {
            if( row.children[ctr].children.length > 0 )
            {
                if( row.children[ctr].children[0].tagName == "INPUT"  )
                {
                    var inputEl =  row.children[ctr].children[0];
                    if(( inputEl.name.substring(inputEl.name.length-1, inputEl.name.length) == code )
                        && (inputEl.value.length > 0))
                    {
                        billableHours += parseFloat(inputEl.value);
                    }
                    else
                    {
                        if( inputEl.name.substring(inputEl.name.length-4, inputEl.name.length) == sub )
                        {
                            inputEl.value = billableHours;
                            bHours = billableHours;
                        }
                        if( inputEl.name.substring(inputEl.name.length-5, inputEl.name.length) == "Total" )
                        {
                            inputEl.value = (bHours + nbHours);
                        }
                    }
                }
            }    
        }
    }
}

function getNBillableHours(input, code, sub)
{    
    var billableHours = 0;
    var row = input.parentElement.parentElement;
    if( row.tagName == "TR" )
    {
        var cols = row.children.length
        for( var ctr = 0; ctr < cols; ctr++)
        {
            if( row.children[ctr].children.length > 0 )
            {
                if( row.children[ctr].children[0].tagName == "INPUT"  )
                {
                    var inputEl =  row.children[ctr].children[0];
                    if(( inputEl.name.substring(inputEl.name.length-1, inputEl.name.length) == code )
                        && (inputEl.value.length > 0))
                    {
                        billableHours += parseFloat(inputEl.value);
                    }
                    else
                    {
                        if( inputEl.name.substring(inputEl.name.length-4, inputEl.name.length) == sub )
                        {
                            inputEl.value = billableHours;
                            nbHours = billableHours;
                        }
                        if( inputEl.name.substring(inputEl.name.length-5, inputEl.name.length) == "Total" )
                        {
                            inputEl.value = (bHours + nbHours);
                        }
                    }
                }
            }    
        }
    }
}

function deleteTimeEntry(elem)
{
    var allZero = true;
    var row = elem.parentElement.parentElement;
    if( row.tagName == "TR" )
    {
        var cols = row.children.length;    
        for( var ctr = 0; ctr < cols; ctr++)
        {
            var col = row.children[ctr]
            if(col.children.length > 0 )
            {
                var foundElem = col.children[0];
                if(( foundElem.tagName == "INPUT"  ) && (!foundElem.disabled ))
                {
                    foundElem.value = 0;
                }
                else
                {
                    allZero = false;
                }
            }    
        }
    }
    getHourTotals(elem, 'N', 'NSub')
    getHourTotals(elem, 'B', 'BSub')
    if( allZero )
    {
        row.style.display = "none";
        row.style.visibility = "hidden";
    }
}

var oPopup = window.createPopup();
function openPopupCalendar()
{
    var oPopBody = oPopup.document.body;
    var lefter = event.offsetX+10;
    var topper = event.offsetY+10;
    oPopBody.innerHTML = "<div class='bg1'>" + hiddenCal.innerHTML + "</div>"; 
    oPopup.show(lefter, topper, 300, 300, event.srcElement);
}

