﻿
function ToggleInfoRequest(conID) {
    var elDiv = document.getElementById(conID + '_divInfoRequestBody');
    var elImg = document.getElementById(conID + '_imgInfoRequest');
    if (elDiv != null) {
        if (elDiv.style.display != 'none') {
            elDiv.style.display = 'none';
            if (elImg != null)
                elImg.src = '../images/module_up.gif';
        }
        else {
            elDiv.style.display = '';
            if (elImg != null)
                elImg.src = '../images/module_down.gif';
        }
    }
}

function InfoRequestSubmitClick(conID, valGroup) {
    var allowPost = false;
    try {
        if (InfoRequestEmailValidate(conID) && InfoRequestPhoneValidate(conID)) {
            var hiddenWebsiteUserID = document.getElementById(conID + '_hiddenWebsiteUserID');
            var hiddenRequestID = document.getElementById(conID + '_hiddenRequestID');
            var hiddenRequestSource = document.getElementById(conID + '_hiddenInfoRequestSource');
            var errorNameDiv = document.getElementById(conID + '_divIvalidName');
            var errorContactDiv = document.getElementById(conID + '_divInvalidContactFields');
            var txtName = document.getElementById(conID + '_txtName');
            var txtEmail = document.getElementById(conID + '_txtEmail');
            var txtPhone = document.getElementById(conID + '_txtPhone');
            var txtQuestion = document.getElementById(conID + '_txtQuestion');

            var websiteUserID = hiddenWebsiteUserID.value;
            var source = hiddenRequestSource.value;
            var name = txtName.value;
            var email = txtEmail.value;
            var phone = txtPhone.value;
            var question = txtQuestion.value;

            if (hiddenRequestID.value < 1) {
                if (name == '') {
                    errorNameDiv.style.display = '';
                }
                else {
                    if (email == '' && phone == '') {
                        errorContactDiv.style.display = '';
                    }
                    else {
                        SendInfoRequest(websiteUserID, name, email, phone, question, source, conID);
                    }
                }
            }
        }
    }
    catch (ex) {
        allowPost = true;
    }
    finally {
        return allowPost;
    }
}

function InfoRequestEmailValidate(conID) {
    var valid = true;
    var emailEntered = false;   
    var errorDiv = document.getElementById(conID + '_divIvalidEmail');
    var txtEmail = document.getElementById(conID + '_txtEmail');
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    
    if (txtEmail) {
        if (txtEmail.value != '') {
            emailEntered = true;
            valid = emailPattern.test(txtEmail.value);
        }
    }

    if (errorDiv) {
        if (!valid) {
            errorDiv.style.display = '';
        }
        else {
            errorDiv.style.display = 'none';
            if (emailEntered) {
                ClearInfoRequestContactValidation(conID);
            }
        }
    }
    return valid;
}

function InfoRequestPhoneValidate(conID) {
    var valid = true;
    var phoneEntered = false;
    var errorDiv = document.getElementById(conID + '_divIvalidPhone');
    var txtPhone = document.getElementById(conID + '_txtPhone');
    var phonePattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;

    if (txtPhone) {
        if (txtPhone.value != '') {
            phoneEntered = true;
            valid = phonePattern.test(txtPhone.value);
        }
    }

    if (errorDiv) {
        if (!valid) {
            errorDiv.style.display = '';
        }
        else {
            errorDiv.style.display = 'none';
            if (phoneEntered) {
                ClearInfoRequestContactValidation(conID);
            }
        }
    }
    return valid;
}

function ClearInfoRequestNameValidation(conID) {
    try {
        var errorDiv = document.getElementById(conID + '_divIvalidName');

        SetWebsiteUserID(conID, -1);
        ClearSuccessDiv(conID);
        if (errorDiv) {
            errorDiv.style.display = 'none';
        }
    }
    catch (ex) {
    }
}

function ClearInfoRequestContactValidation(conID) {
    try {
        var errorDiv = document.getElementById(conID + '_divInvalidContactFields');

        SetWebsiteUserID(conID, -1);
        ClearSuccessDiv(conID);
        if (errorDiv) {
            errorDiv.style.display = 'none';
        }
    }
    catch (ex) {
    }
}

function ClearSuccessDiv(conID) {
    try {
        var successDiv = document.getElementById(conID + '_divRequestSubmitted');
        SetRequestID(conID, -1);
        if (successDiv) {
            successDiv.style.display = 'none';
        }
    }
    catch (ex) {
    }
}

function SetRequestID(conID, rID) {
    var hiddenRequestID = document.getElementById(conID + '_hiddenRequestID');
    
    if (hiddenRequestID) {
        hiddenRequestID.value = rID;
    }
}

function SetWebsiteUserID(conID, wuID) {
    var hiddenWebsiteUserID = document.getElementById(conID + '_hiddenWebsiteUserID');

    if (hiddenWebsiteUserID) {
        hiddenWebsiteUserID.value = wuID;
    }
}

function SendInfoRequest(websiteUserID, name, email, phone, question, source, conID) {
    WhiteCapSolutions.WCSBaseService.SubmitInfoRequest(websiteUserID, name, email, phone, question, source, InfoRequestReturn, InfoRequestError, conID);
}

function InfoRequestReturn(request, conID) {
    try {
        var divRequestSubmitted = document.getElementById(conID + '_divRequestSubmitted');

        SetWebsiteUserID(conID, request.WebsiteUserID);
        SetRequestID(conID, request.ID);
                
        if (divRequestSubmitted) {
            if (request.ID > -1) {
                divRequestSubmitted.style.display = '';
            }
            else {
                divRequestSubmitted.style.display = 'none';
            }
        }
    }
    catch (ex) {
    }
}

function InfoRequestError(error) {
    alert('We are unable to process your request at this time. Please email or call with any questions.');
}
