// Alphanumerical.
var regExpAlphaNumerical = /[a-zA-Z0-9 ']/;

// Alphabetical.
var regExpAlphabetical   = /[a-zA-Z ']/;

// Numerical.
var regExpNumerical      = /[0-9]/;

function getCharCode(e) {
    if (window.event) {
        // IE
        return e.keyCode;
    } else {
        // Other
        return e.charCode;
    }
}

function setGender()
{
    if (sal = document.getElementById('salutation')) {
        if (sal.value == 'Mr' ||
        sal.value == 'Mr') {
            if (gen = document.getElementById('genderm')) gen.checked = true;
        } else if (sal.value == 'Mrs' ||
        sal.value == 'Miss' ||
        sal.value == 'Ms') {
            if (gen = document.getElementById('genderf')) gen.checked = true;
        }
    }
}

function showHideIssue()
{

    var issueVar       = $('#issue');
    var issueNoticeVar = $('#ccIssueNotice');

    if (sal = $('#ccType')) {

        if (sal.val() == 'Mastercard' || sal.val() == 'Visa' || sal.val() == 'American Express') {

            if (issueVar) issueVar.val(0);
            $('#issueRow').hide();

        } else {

            $('#issueRow').show();

        }

    }

    if ($('#ccMVal').val() != '' && $('#ccyval').val() != '') {

        $('#issueLabel').addClass('disFormLabel');
        issueNoticeVar.html('<br/>(not required)');
        issueNoticeVar.addClass('disText');
        issueVar.attr({readonly : 'readonly'});
        issueVar.addClass('disField');
        issueVar.val('');

    } else {

        $('#issueLabel').removeClass('disFormLabel');
        issueNoticeVar.removeClass('disText');
        issueVar.removeClass('disField');
        issueVar.removeAttr('readonly');
        issueNoticeVar.html('<br/>(as printed on your card)');

    }
}

function copyFromAddress()
{
    if (document.getElementById('sameasmain').checked == true) {
        if (field = document.getElementById('billpostcode')) {
            field.value    = document.getElementById('postcode').value;
            field.readOnly = true;
        }
        if (field = document.getElementById('billaddress1')) {
            field.value    = document.getElementById('address1').value;
            field.readOnly = true;
        }
        if (field = document.getElementById('billaddress2')) {
            field.value    = document.getElementById('address2').value;
            field.readOnly = true;
        }
        if (field = document.getElementById('billcity')) {
            field.value    = document.getElementById('city').value;
            field.readOnly = true;
        }
    } else {
        if (field = document.getElementById('billpostcode')) {
            field.value    = '';
            field.readOnly = false;
        }
        if (field = document.getElementById('billaddress1')) {
            field.value    = '';
            field.readOnly = false;
        }
        if (field = document.getElementById('billaddress2')) {
            field.value    = '';
            field.readOnly = false;
        }
        if (field = document.getElementById('billcity')) {
            field.value    = '';
            field.readOnly = false;
        }
    }
}

function showHideBusinessQuestion()
{
    if (item = document.getElementById('custtypepre')) {

        selectedValue = item.options[item.selectedIndex].value;
        item2 = document.getElementById('businessCustType');

        if (item2) {
            // If they have selected Business we show the question to ask what
            // sort of business they are.
            if (selectedValue == 2) {

                item2.style['display'] = '';

            } else {

                item2.style['display'] = 'none';

                // If they have selected Consumer we submit the form automatically.
                if (selectedValue == 1) if (item2 = document.getElementById('submitCustomer')) item2.click();

            }
        }

    }
}

function moveAddressData()
{
    // Move address 2 data to address 3 data.
    srcfield = document.getElementById("prevpostcode");
    dstfield = document.getElementById("prev2postcode");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("prevAdd1");
    dstfield = document.getElementById("prev2Add1");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("prevAdd2");
    dstfield = document.getElementById("prev2Add2");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("prevCity");
    dstfield = document.getElementById("prev2City");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("prevYears");
    dstfield = document.getElementById("prev2Years");
    dstfield.selectedIndex = srcfield.selectedIndex;

    srcfield = document.getElementById("prevMonths");
    dstfield = document.getElementById("prev2Months");
    dstfield.selectedIndex = srcfield.selectedIndex;

    // Move address 1 data to address 2 data.
    srcfield = document.getElementById("postcode");
    dstfield = document.getElementById("prevpostcode");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("address1");
    dstfield = document.getElementById("prevAdd1");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("address2");
    dstfield = document.getElementById("prevAdd2");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("city");
    dstfield = document.getElementById("prevCity");
    dstfield.value = srcfield.value;

    srcfield = document.getElementById("addYears");
    dstfield = document.getElementById("prevYears");
    dstfield.selectedIndex = srcfield.selectedIndex;

    srcfield = document.getElementById("addMonths");
    dstfield = document.getElementById("prevMonths");
    dstfield.selectedIndex = srcfield.selectedIndex;

    // Clear address 1.
    srcfield = document.getElementById("postcode");
    srcfield.value = '';
    srcfield = document.getElementById("postcodeAjax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("address1");
    srcfield.value = '';
    srcfield = document.getElementById("address1Ajax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("address2");
    srcfield.value = '';
    srcfield = document.getElementById("address2Ajax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("city");
    srcfield.value = '';
    srcfield = document.getElementById("cityAjax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("resStatus");
    srcfield.value = '';
    srcfield = document.getElementById("resstatusAjax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("addYears");
    srcfield.selectedIndex = 0;
    srcfield = document.getElementById("addyearsAjax");
    srcfield.innerHTML = '&nbsp;';

    srcfield = document.getElementById("addMonths");
    srcfield.selectedIndex = 0;
}

function inputNumerical(e) {
    // Only allows numerical information in the input field.
    var c = getCharCode(e);

    // Cancel the enter key for Firefox/Seamonkey
    if (c == 0) {
        ent = e.keyCode;
    } else {
        ent = 0;
    }

    // test the actual character from key code (i == 0 && j != 13) is enter/retrun key
    if (regExpNumerical.test(String.fromCharCode(c)) || (c == 0 && ent != 13)) {
        return true;
    } else {
        return false;
    }
}

function inputAlphabetical(e) {
    // Only allows alphabetical information in the input field.
    var c = getCharCode(e);

    // Cancel the enter key for Firefox/Seamonkey
    if (c == 0) {
        ent = e.keyCode;
    } else {
        ent = 0;
    }


    if ((c == 0 && ent != 13) ||
    regExpAlphabetical.test(String.fromCharCode(c))) {
        // It it's not the enter key and the value is alphabetical
        // it's ok.
        return true;
    } else {
        return false;
    }
}

function inputAlphaNumerical(e) {
    // Only allows alphanumerical information in the input field.
    var c = getCharCode(e);

    // Cancel the enter key for Firefox/Seamonkey
    if (c == 0) {
        ent = e.keyCode;
    } else {
        ent = 0;
    }

    if ((c == 0 && ent != 13) ||
    regExpAlphaNumerical.test(String.fromCharCode(c))) {
        // It's not the enter key and the value is alphabetical
        // it's ok.
        return true;
    } else {
        return false;
    }
}

function cancelEnter(e) {
    // Prevents the enter key from being pressed.
    var c = getCharCode(e);

    // Cancel the enter key for Firefox/Seamonkey
    if (c == 0) {
        c = e.keyCode;
    }


    if (c == 13) {
        // It's the enter key so stop it.
        return false;
    } else {
        // It's not the enter key so it's ok.
        return true;
    }
}

function setVisible(dv, bool, inline) {

    if (inline == false) {
        type = 'block';
    } else {
        type = '';
    }
    // Toggles layers on and off by explicitly setting their display style.
    dv = document.getElementById(dv);
    if ((dv)) {
        if (bool == true) {
            dv.style['display'] = type;
        } else {
            dv.style['display'] = 'none';
        }
    }
}

function setClass(dv, className) {
    // Toggles layers on and off by explicitly setting their display style.
    dv = document.getElementById(dv);
    if ((dv)) {
        dv.className = className;
    }
}

function setSrc(dv, src) {
    // Toggles layers on and off by explicitly setting their display style.
    dv = document.getElementById(dv);
    if ((dv)) {
        dv.src = src;
    }
}

function checkAddressHistory(step) {
    // Calculates how many addresses should be displayed on the Address Details page and calls setVisible to show and hide them.
    var years1   = parseInt(document.getElementById('addYears').value);
    var months1  = parseInt(document.getElementById('addMonths').value);
    var years2   = parseInt(document.getElementById('prevYears').value);
    var months2  =  parseInt(document.getElementById('prevMonths').value);
    var totMths1 = months1 + (years1 * 12);
    var totMths2 = months2 + (years2 * 12);

    if (step == '1') {
        if (totMths1 < 36) {
            setVisible('prevAddress1', true);
            setClass('address', 'formTable greyBgDashed');
            setSrc('addressFooter', '/images/login_table_footer_white.gif');
            if (totMths2 != 0) {
                checkAddressHistory('2');
            }
        } else {
            setVisible('prevAddress1',false);
            setVisible('prevAddress2', false);
            setClass('address', 'formTable greyBgNonDashed');
            setClass('prevAddress1', 'formTable whiteBgNonDashed');
            setSrc('addressFooter', '/images/login_table_footer_grey.gif');
        }
    } else if (step == '2') {
        if ((totMths1 + totMths2) < 36) {
            setVisible('prevAddress2', true);
            setClass('prevAddress1', 'formTable whiteBgDashed');
            setSrc('addressFooter', '/images/login_table_footer_grey.gif');
        } else {
            setVisible('prevAddress2', false);
            setClass('prevAddress1', 'formTable whiteBgNonDashed');
            setSrc('addressFooter', '/images/login_table_footer_white.gif');
        }
    }
}