// ========================================================================
// Copyright 2004, Saul Marine & Co Solicitors
// ========================================================================
// $Id: saulmarine_formVal.js 192 2004-12-05 10:55:06Z tprice $
// ========================================================================

// globals
var conveyLabels =  [   "client-name-lbl",
                        "client-email-lbl",
                        "client-phone-lbl",
                        "sale-type-lbl",
                        "sale-mortgager-lbl",
                        "sale-price-lbl",
                        "sale-timescale-lbl",
                        "purch-type-lbl",
                        "purch-mortgager-lbl",
                        "purch-price-lbl",
                        "purch-timescale-lbl" ];

var debtLabels =    [   "client-name-lbl",
                        "client-email-lbl",
                        "client-phone-lbl",
                        "debt-nature-lbl",
                        "debtor-type-lbl",
                        "debt-value-lbl",
                        "debt-age-lbl",
                        "debt-action-lbl" ];

// create a LabelColours object with
//     normColour = default ("#000")
//     errColour = default ("#BD0C21")
var labelColours = new LabelColours();

var maxDebtActionChars = 500;

function validateClientData(form) {
    return isNotEmpty(form.realname, "Please enter your name so we can respond to you", "client-name-lbl", labelColours)
        && isNotEmpty(form.email, "Please enter your email address so we can respond to you", "client-email-lbl", labelColours)
        && isEmailAddr(form.email, "client-email-lbl", labelColours)
        && isNotEmpty(form.phone, "Please enter your contact phone number so we can respond to you",
                        "client-phone-lbl", labelColours)
        && isPhoneNum(form.phone, null, null, "client-phone-lbl", labelColours)
}

function validateSaleData(form) {
    var msg = "Please choose either Freehold or Leasehold for the sale"
    if (!isValidRadio(form.saleType, msg, "sale-type-lbl", labelColours)) return false;
    msg = "Please enter a sale mortgage company"
    if (form.saleIsMortgaged.checked &&
        !isNotEmpty(form.saleMortgager, msg, "sale-mortgager-lbl", labelColours)) return false;
    msg = "Please enter a valid sale price (excluding the currency symbol, e.g. 180000)"
    if (!isNotEmpty(form.salePrice, msg, "sale-price-lbl", labelColours)) return false;
    // salePrice is validated on key presses
    // if (!isNumber(form.salePrice, msg, "sale-price-lbl", labelColours)) return false;
    if (!isNonZero(form.salePrice, "Please enter a non-zero sale price", "sale-price-lbl", labelColours)) return false;
    msg = "Please enter an expected time to completion for the sale"
    if (!isChosen(form.saleTimescaleMonths, 0, msg, "sale-timescale-lbl", labelColours)) return false;
    return true;
}

function validatePurchData(form) {
    var msg = "Please choose either Freehold or Leasehold for the purchase"
    if (!isValidRadio(form.purchType, msg, "purch-type-lbl", labelColours)) return false;
    msg = "Please enter a proposed purchase mortgage company"
    if (!isNotEmpty(form.purchMortgager, msg, "purch-mortgager-lbl", labelColours)) return false;
    msg = "Please enter a valid purchase price (excluding the currency symbol, e.g. 180000)"
    if (!isNotEmpty(form.purchPrice, msg, "purch-price-lbl", labelColours)) return false;
    // purchPrice is validated on key presses
    // if (!isNumber(form.purchPrice, msg, "purch-price-lbl", labelColours)) return false;
    if (!isNonZero(form.purchPrice, "Please enter a non-zero purch price", "purch-price-lbl", labelColours)) return false;
    msg = "Please enter an expected time to completion for the purchase"
    if (!isChosen(form.purchTimescaleMonths, 0, msg, "purch-timescale-lbl", labelColours)) return false;
    return true;
}

function validateConveyForm(form) {
    resetLabelColours(conveyLabels, labelColours);
    if (!validateClientData(form)) return false;
    var convType = null;
    for (var i = 0; i < form.conveyancingType.length; i++) {
        if (form.conveyancingType[i].checked) {
            convType = form.conveyancingType[i].value
        }
    }
    if (convType == null) return false;
    // alert("convType = " + convType);
    var valid;
    if (convType == "Sale") {
        return validateSaleData(form);
    } else if (convType == "Purchase") {
        return validatePurchData(form);
    } else if (convType == "Sale and Purchase") {
        return validateSaleData(form) && validatePurchData(form);
    } else {
        return false;
    }
}

function validateDebtForm(form) {
    resetLabelColours(debtLabels, labelColours);
    if (!validateClientData(form)) return false;
    msg = "Please specify the nature of the debt";
    if (!isNotEmpty(form.debtNature, msg, "debt-nature-lbl", labelColours)) return false;
    var msg = "Please choose 'UK Resident' or 'UK Company'";
    if (!isValidRadio(form.debtorType, msg, "debtor-type-lbl", labelColours)) return false;
    msg = "Please enter a valid value for the debt (excluding the currency symbol, e.g. 1500)";
    if (!isNotEmpty(form.debtValue, msg, "debt-value-lbl", labelColours)) return false;
    // debtValue is validated on key presses
    // if (!isNumber(form.debtValue, msg, "debt-value-lbl", labelColours)) return false;
    if (!isNonZero(form.debtValue, "Please enter a non-zero value for the debt", "debt-value-lbl", labelColours)) return false;
    msg = "Please enter an age for the debt";
    if (!isChosen(form.debtAgeMonths, 0, msg, "debt-age-lbl", labelColours)) return false;
    msg = "Please describe your action thus far";
    if (!isNotEmpty(form.debtAction, msg, "debt-action-lbl", labelColours)) return false;
    if (!isMaxLen(form.debtAction, maxDebtActionChars, null, "debt-action-lbl", labelColours)) return false;
    return true;
}
