function validateForm(frmName) {
    var frm = document.forms[frmName];

    toggle_submit(frm.elements['submit'], frmName, 'disable');
    return validateCard (frm.elements['cc_no'].value, frm.elements['cc_type'].value, 
      frm.elements['cc_exp_month'], frm.elements['cc_exp_year']);
}

function toggle_bill_to_fields(caller, frmName) {
    var frm = document.forms[frmName];
    var state;
    var bgcolor;
    var fldRegExp = /^bill_to_.*$/;

    if (caller.checked == true) {
        state = true;
        bgcolor = "#CCCCCC";
    } else {
        state = false;
        bgcolor = "#FFFFFC";
    }

    for (var i = 0; i < frm.elements.length; i++) {
        if (fldRegExp.test(frm.elements[i].name)) {
            frm.elements[i].disabled = state;
            frm.elements[i].style.backgroundColor = bgcolor;

            if (state == true) {
                frm.elements[i].value = "";
            }
        }
    }
}

function toggle_submit(submitBtn, frmName, action) {
    var frm = document.forms[frmName];

    if (action == "disable") {
        frm.elements["submit"].disabled = true;
    } 
    else {
        frm.elements["submit"].disabled = false;
    }
}

function toggle_field(caller,frm,fld) {
  var state;
  var should_give_focus = false;
  var bgcolor;

  if (caller.checked == true) {
    state = false;
    bgcolor = "#FFFFFC";
    should_give_focus = true;
  } else {
    state = true;
    bgcolor = "#CCCCCC";
  }

  document.forms[frm].elements[fld].disabled = state;
  document.forms[frm].elements[fld].style.backgroundColor = bgcolor;

  if (should_give_focus == true) {
    document.forms[frm].elements[fld].focus();
  } else {
    document.forms[frm].elements[fld].value = "";
  }
}


function required_fields() {
    var frm = 'order';
    var toggleSwitch = 'copy_bill_to_from_ship_to';

    var alwaysRequired = new Array('qty_to_ship', 'ship_to_contact', 'ship_to_address', 'ship_to_city',
      'ship_to_state', 'ship_to_postal_code', 'ship_to_area_code', 'ship_to_prefix', 'ship_to_suffix',
      'ship_to_email');

    var sometimesRequired = new Array('bill_to_name', 'bill_to_address', 'bill_to_city', 'bill_to_state', 
      'bill_to_postal_code', 'bill_to_area_code', 'bill_to_prefix', 'bill_to_suffix', 'bill_to_email');

    var currentlyRequired = alwaysRequired;

    if (document.forms[frm].elements[toggleSwitch].checked == true) {
        currentlyRequired.concat(sometimesRequired);
    }

    return currentlyRequired;
}

function advance_field(caller, frmName, size, nextfield) {
    var frm = document.forms[frmName];

    if (caller.value.length >= size) {
        frm.elements[nextfield].select();
    }
}

function resetForm(frmName) {
    var frm = document.forms[frmName];

    toggle_submit(frm.elements['submit'], frmName, 'enable');
    frm.elements['copy_bill_to_from_ship_to'].checked = false;
    toggle_bill_to_fields(frm.elements['copy_bill_to_from_ship_to'], frmName);
}

function update_total(caller, frmName, elementName, amount) {
    var frm = document.forms[frmName];

    frm.elements[elementName].value = "$" + round_dollar_amount(caller.value * amount);
}

function round_dollar_amount(amt) {
    pennies = amt * 100;

    pennies = Math.round(pennies);

    strPennies = "" + pennies;
    len = strPennies.length;

    return strPennies.substring(0, len - 2) + "." + strPennies.substring(len - 2, len);
}
