﻿
function ChangeFormView(sel) {

    if (sel == "Enquiry") {
        document.getElementById('productNameRow').style.display = '';
        document.getElementById('productSizeRow').style.display = '';
        document.getElementById('usedByBestBeforeRow').style.display = '';
        document.getElementById('otherCodesRow').style.display = '';
        document.getElementById('purchasedFromRow').style.display = '';
        document.getElementById('storeLocationRow').style.display = '';
    }
    else {
        document.getElementById('productNameRow').style.display = 'none';
        document.getElementById('productSizeRow').style.display = 'none';
        document.getElementById('usedByBestBeforeRow').style.display = 'none';
        document.getElementById('otherCodesRow').style.display = 'none';
        document.getElementById('purchasedFromRow').style.display = 'none';
        document.getElementById('storeLocationRow').style.display = 'none';
    }
}


function HighlightRequired(f) {

    if (f.value == "") {
        SetErrorHighlight(f, true);

        return true;
    }
    else {
        SetErrorHighlight(f, false);

        return false;
    }
}

function SetErrorHighlight(elem, tf) {

    if (tf == true) {
        elem.style.background = "#FF7878";
    }
    else {
        elem.style.background = "#FFF";
    }
}



function ValidateContactDetails() {
    var err = false;

    err = HighlightRequired(document.getElementById('firstName')) || err;
    err = HighlightRequired(document.getElementById('surname')) || err;

    if (IsByEmailChecked())    
        err = HighlightRequired(document.getElementById('email')) || ValidateEmail() || err;
    else {
        SetErrorHighlight(document.getElementById('email'), false);
        document.getElementById('InvalidEmailMessage').style.display = 'none';
    }

    if (IsByPhoneChecked())    
        err = HighlightRequired(document.getElementById('phone')) || err;
    else 
        SetErrorHighlight(document.getElementById('phone'), false);

    if (IsByPostChecked())     
        err = ValidateAddressDetails() || err;
    else
        ClearErrorHighlightsOnAddressFields();
    
    return !err;
}

function ValidateAddressDetails() {
    var error = false;
    error = HighlightRequired(document.getElementById('streetNum')) || error;
    error = HighlightRequired(document.getElementById('streetName')) || error;
    error = HighlightRequired(document.getElementById('suburb')) || error;
    error = HighlightRequired(document.getElementById('postcode')) || error;

    var state = document.getElementById('state');
    var stateError = state.selectedIndex < 1;
    error = stateError || error;
    SetErrorHighlight(state, stateError);

    var streetType = document.getElementById('streetType');
    var streetTypeError = streetType.selectedIndex < 1 || streetType.selectedIndex == 7;
    error = streetTypeError || error;
    SetErrorHighlight(streetType, streetTypeError);
        
    return error
}

function ClearErrorHighlightsOnAddressFields() {
        SetErrorHighlight(document.getElementById('streetNum'), false);
        SetErrorHighlight(document.getElementById('streetName'), false);
        SetErrorHighlight(document.getElementById('streetType'), false);
        SetErrorHighlight(document.getElementById('suburb'), false);
        SetErrorHighlight(document.getElementById('state'), false);
        SetErrorHighlight(document.getElementById('postcode'), false);
}

function IsByEmailChecked() {
    return document.getElementById('contactViaEmail').checked;
}

function IsByPhoneChecked() {
    return document.getElementById('contactViaPhone').checked;
}

function IsByPostChecked() {
    return document.getElementById('contactViaPost').checked;
}

function ValidatePreferredReply() {
    var err = false;

    if (document.getElementById('noContactRequired').checked || document.getElementById('contactViaEmail').checked ||
                    document.getElementById('contactViaPhone').checked || document.getElementById('contactViaPost').checked) {
        // At least one has been selected, so its ok
        document.getElementById('prefRepErr').style.display = 'none';
        err = false;
    }
    else {
        document.getElementById('prefRepErr').style.display = '';
        err = true;
    }

    return !err;
}

function ValidateEnquiry() {
    var err = false;
    if (document.getElementById('enqType').value == "Enquiry") {
        err = HighlightRequired(document.getElementById('productName')) || err;
    }

    err = HighlightRequired(document.getElementById('comments')) || err;

    return !err;
}


function ValidateForm() {
    var repl = ValidatePreferredReply();
    var cont = ValidateContactDetails();
    var enq = ValidateEnquiry();

    if (repl && cont && enq) {
        document.getElementById('FormErrorMessage').style.display = 'none';
        return true;
    }
    else {
        document.getElementById('FormErrorMessage').style.display = '';
        return false;
    }
}


function SetReplyOption(isNoContactReq) {

    if (isNoContactReq) {
        document.getElementById('contactViaEmail').checked = false;
        document.getElementById('contactViaPhone').checked = false;
        document.getElementById('contactViaPost').checked = false;
    }
    else {
        document.getElementById('noContactRequired').checked = false;
    }

}


function ValidateEmail() {
    var elem = document.getElementById('email');

    var x = false;
    
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    x = emailPattern.test(elem.value);

    if (x == true) {
        document.getElementById('InvalidEmailMessage').style.display = 'none';
        SetErrorHighlight(elem, false);
    }
    else 
    {
        document.getElementById('InvalidEmailMessage').style.display = '';
        SetErrorHighlight(elem, true);
    }

    return !x;
}


