function dumpProps(obj, parent)
{
    // Go through all the properties of the passed-in object
    for (var i in obj)
    {
        // if a parent (2nd parameter) was passed in, then use that to
        // build the message. Message includes i (the object's property name)
        // then the object's property value on a new line
        if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
        // Display the message. If the user clicks "OK", then continue. If they
        // click "CANCEL" then quit this level of recursion
        if (!confirm(msg)) { return; }
        // If this property (i) is an object, then recursively process the object
        if (typeof obj[i] == "object")
        {
            if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
        }
    }
}

function CheckQuantity(evt)
{
    if (evt)
    {
        var charCode = (evt.charCode) ? evt.charCode :
            ((evt.keyCode) ? evt.keyCode :
            ((evt.which) ? evt.which : 0));
        if (((charCode >= 48) && (charCode <= 57)) || (charCode == 8) || (charCode == 44) || (charCode == 127) || (charCode == 9))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

function CheckMoney(evt, tb)
{
    return CheckDecimal(evt);
}

function CheckPercentage(evt, tb)
{
    return CheckDecimal(evt);
}

function CheckDecimal(evt)
{
    if (evt)
    {
        var charCode = (evt.charCode) ? evt.charCode :
            ((evt.keyCode) ? evt.keyCode :
            ((evt.which) ? evt.which : 0));
        if (((charCode >= 48) && (charCode <= 57)) || (charCode == 44) || (charCode == 8) || (charCode == 127) || (charCode == 46) || (charCode == 190) || (charCode == 9))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

function myParseInt(input)
{
    var num = parseInt(myParseNumberString(input), 10);
    return isNaN(num) ? 0 : num;
}

function myParseFloat(input)
{
    var num = parseFloat(myParseNumberString(input));
    return isNaN(num) ? 0.0 : num;
}

function myParseNumberString(input)
{
    var num = '';
    if (input.length > 0)
    {
        var i = 0;
        for (i = 0; i < input.length; i++)
        {
            if (((input.charAt(i) >= '0') && (input.charAt(i) <= '9')) || (input.charAt(i) == '.') || (input.charAt(i) == '-'))
            {
                num = num + input.charAt(i);
            }
        }
    }
    return num;
}

function commaFormatted(input)
{
    var amount = input + '';
    var delimiter = ',';
    var a = amount.split('.', 2);
    var d = a[1];
    if (isNaN(parseInt(d))) { d = ''; }
    var i = parseInt(a[0]);
    if (isNaN(i)) { return ''; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3)
    {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if (d.length < 1) { amount = n; }
    else { amount = n + '.' + d; }
    amount = minus + amount;
    return amount;
}

function currencyFormatted(input)
{
    var amount = input + '';
    var i = myParseFloat(amount);
    if (isNaN(i)) { i = 0.00; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if (s.indexOf('.') < 0) { s += '.00'; }
    if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return commaFormatted(s);
}

function integerFormatted(input)
{
    var amount = input + '';
    var i = myParseInt(amount);
    if (isNaN(i)) { i = 0; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    s = new String(i);
    s = minus + s;
    return commaFormatted(s);
}


function roundNumber(rnum, dp)
{
    if (rnum > 8191 && rnum < 10485)
    {
        rnum = rnum - 5000;
        var newnumber = Math.round(rnum * Math.pow(10, dp)) / Math.pow(10, dp);
        newnumber = newnumber + 5000;
        rnum = newnumber;
    }
    else
    {
        rnum = Math.round(rnum * Math.pow(10, dp)) / Math.pow(10, dp);
    }

    return rnum;
}

function updateMembershipOrderGridTotal(cbId, tbLineId, LineAmount, tbTaxId, TaxAmount, tbTotalId, TotalAmount)
{
    var cb = document.getElementById(cbId);
    var tbLine = document.getElementById(tbLineId);
    var tbTax = document.getElementById(tbTaxId);
    var tbTotal = document.getElementById(tbTotalId);

    var Line = myParseFloat(tbLine.innerText);
    var Tax = myParseFloat(tbTax.innerText);
    var Total = myParseFloat(tbTotal.innerText);

    if (cb.checked)
    {
        Line = Line + LineAmount;
        Tax = Tax + TaxAmount;
        Total = Total + TotalAmount;
    }
    else
    {
        Line = Line - LineAmount;
        Tax = Tax - TaxAmount;
        Total = Total - TotalAmount;
    }

    tbLine.innerText = "$" + currencyFormatted(Line);
    tbTax.innerText = "$" + currencyFormatted(Tax);
    tbTotal.innerText = "$" + currencyFormatted(Total);
}

function disableCtrlKeyCombination(e)
{
    //list all CTRL + key combinations you want to disable
    var forbiddenKeys = new Array('a', 'n', 'c', 'x', 'v', 'j');
    var key;
    var isCtrl;

    if (window.event)
    {
        key = window.event.keyCode;     //IE
        if (window.event.ctrlKey)
            isCtrl = true;
        else
            isCtrl = false;
    }
    else
    {
        key = e.which;     //firefox
        if (e.ctrlKey)
            isCtrl = true;
        else
            isCtrl = false;
    }


    //if ctrl is pressed check if other key is in forbidenKeys array
    if (isCtrl)
    {
        return false;
        //        for (i = 0; i < forbiddenkeys.length; i++)
        //        {
        //            //case-insensitive comparation
        //            if (forbiddenKeys[i].toLowerCase() == String.fromCharCode(key).toLowerCase())
        //            {
        //                // alert(‘Key combination CTRL + ‘ + String.fromCharCode(key) + ‘ has been disabled.’);
        //                return false;
        //            }
        //       }
    }

    return true;
}


//
// the following function is used by ClassSelection to turn on and off div's
//
function ReverseDisplay(objectOn, objectOff)
{
    var objOn = document.getElementById(objectOn);
    objOn.className = 'visible';

    var objOff = document.getElementById(objectOff);
    objOff.className = 'hidden';

    return true;
}

//
// the following is used by the Appointment3Line and Appointment2Line
//
function ButtonClick(t)
{
    var b = $(t).find("a");
    if (!b[0].disabled)
    {
        if (b[0].click)
        {
            b[0].click();
        }
        else
        {
            window.location.href = b[0].href;
        }
        return false;
    }
    return true;
}

