////################################################################################################
////########## GENERAL (STRINGS) ###################################################################
////################################################################################################


////==== trim given string of leading and trailing whitespace
function trim_string(str) {
    // trim leading
    str = str.replace(/^[\s]+/, "");

    // trim trailing
    str = str.replace(/[\s]+$/, "");

    return str;
}


////==== squeeze multiple spaces into one in given string
function squeeze_string(str) {
    // squeeze
    str = str.replace(/[\s]+/g, " ");

    return str;
}


////################################################################################################
////########## ADMIN FORM ##########################################################################
////################################################################################################


////==== variables
var submit_in_progress = false;


////==== calcualte total price
function form_calcualte_total() {
    // get spans
    var span_subtotal = document.getElementById("cost_subtotal");
    var span_gst = document.getElementById("cost_gst");
    var span_total = document.getElementById("cost_total");

    // get selected type
    var cost_subtotal = document.join_now_form.member_type.options[document.join_now_form.member_type.options.selectedIndex].value.split("|")[1];
    var cost_gst = cost_subtotal * 0.05;
    var cost_total = cost_subtotal * 1.05;

    // set prices
    span_subtotal.firstChild.nodeValue = "$" + Number(cost_subtotal).toFixed(2);
    span_gst.firstChild.nodeValue = "$" + Number(cost_gst).toFixed(2);
    span_total.firstChild.nodeValue = "$" + Number(cost_total).toFixed(2);
}


////==== select given form field
function form_select_field(form, field) {
    document[form + "_form"][field].select();
}


////==== get selected/checked value of given node list
function form_nodes_value(nodes, current_property) {
    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i][current_property]) {
            return nodes[i].value;
        }
    }

    return false;
}


////==== check form for malformed input
function check_join_now_form() {
    // trim and get all necessary field values
    var var_member_group            = form_nodes_value(document.join_now_form.member_group, "checked");
    var var_member_business_name    = document.join_now_form.member_business_name.value     = squeeze_string(trim_string(document.join_now_form.member_business_name.value));
    var var_member_main_contact     = document.join_now_form.member_main_contact.value      = squeeze_string(trim_string(document.join_now_form.member_main_contact.value));
    var var_member_job_title        = document.join_now_form.member_job_title.value         = squeeze_string(trim_string(document.join_now_form.member_job_title.value));
    var var_member_address          = document.join_now_form.member_address.value           = squeeze_string(trim_string(document.join_now_form.member_address.value));
    var var_member_phone            = document.join_now_form.member_phone.value             = squeeze_string(trim_string(document.join_now_form.member_phone.value));
    var var_member_email_address    = document.join_now_form.member_email_address.value     = squeeze_string(trim_string(document.join_now_form.member_email_address.value));
    var var_member_payment          = form_nodes_value(document.join_now_form.member_payment, "checked");

    // group
    if (var_member_group === false) {
        alert("Please select your membership group.");
        return false;
    }

    // business name
    if (var_member_business_name.length === 0) {
        alert("Please enter your business name.");
        form_select_field("join_now", "member_business_name");
        return false;
    }

    // main contact
    if (var_member_main_contact.length === 0) {
        alert("Please enter your main contact.");
        form_select_field("join_now", "member_main_contact");
        return false;
    }

    // job title
    if (var_member_job_title.length === 0) {
        alert("Please enter your job title.");
        form_select_field("join_now", "member_job_title");
        return false;
    }

    // address
    if (var_member_address.length === 0) {
        alert("Please enter your address.");
        form_select_field("join_now", "member_address");
        return false;
    }

    // phone
    if (var_member_phone.length === 0) {
        alert("Please enter your phone number.");
        form_select_field("join_now", "member_phone");
        return false;
    }

    // email address
    if (var_member_email_address.length === 0) {
        alert("Please enter your email address.");
        form_select_field("join_now", "member_email_address");
        return false;
    }

    // payment
    if (var_member_payment === false) {
        alert("Please select your method of payment.");
        return false;
    }

    return true;
}


////==== submit form
function submit_join_now_form() {
    // check form
    if (!submit_in_progress && check_join_now_form()) {
        // set submit in progress
        submit_in_progress = true;

        // submit form
        document.join_now_form.submit();
    }
}
