﻿/************************************************************************  
                                VARS
**************************************************************************/

//window.location.href
var _errorManager = new ErrorManagerJQ($(LayoutElementsJQ.JQDivError));

/************************************************************************ 
                           Page Element Enums
**************************************************************************/
var ContactUsElements =
{
    SpanContactUsMessage: 'spanContactUsMessage',
    DdlChapters: 'ddlOrganizations',
    TxtName: 'txtName',
    TxtEmail: 'txtEmail',

    JQDdlChapters: '#ddlOrganizations',
    JQTxtName: '#txtName',
    JQTxtEmail: '#txtEmail'
}

var ContactUsFieldNames =
{
    Name: 'Name',
    Email: 'Email',
    Message: 'Message',
    Chapter: 'Chapter'
}
/************************************************************************ 
                               Functions 
**************************************************************************/
function pageLoad() {
    showWaitDialog(InformationMessages.ContactInformationRetrieval);

    getOrganizationsUsingService();
}

function getOrganizationsUsingService() {
    SecondIINoneUIService.GetOrganizations(onGetOrganizationsComplete, onSecondIINoneContactInformationError);
}

function onGetOrganizationsComplete(organizations) {
    var element = $get(ContactUsElements.DdlChapters);

    populateSecondIINoneOrganizations(element, organizations);

    var spanContactUsMessage = $get(ContactUsElements.SpanContactUsMessage);
    spanContactUsMessage.innerHTML = InformationMessages.ContactFormMessage;

    performPostLoadOperations();

    hideWaitDialog();
}

function sendContactEmail() {
    if (validateSendEmailForm()) {
        showWaitDialog(InformationMessages.SendEmail);

        sendContactEmailUsingService();
    }
}

function sendContactEmailUsingService() {
    var chapter = $(ContactUsElements.JQDdlChapters);
    var name = $(ContactUsElements.JQTxtName);
    var email = $(ContactUsElements.JQTxtEmail);
    var message = $(ContactUsASPElements.JQTxtMessage);

    SecondIINoneUIService.SendContactEmail(chapter.val(), name.val(), email.val(), message.val(), onSendContactEmailComplete, onSecondIINoneContactInformationError);
}

function onSendContactEmailComplete(organizations) {
    var divContactUs = $get(ContactUsElements.SpanContactUsMessage);
    divContactUs.innerHTML = InformationMessages.EmailSent;

    resetContactForm();

    hideWaitDialog();
}

function validateSendEmailForm() {
    var chapter = $(ContactUsElements.JQDdlChapters);
    var name = $(ContactUsElements.JQTxtName);
    var email = $(ContactUsElements.JQTxtEmail);
    var message = $(ContactUsASPElements.JQTxtMessage);

    _errorManager.ClearErrors();

    var errorCount = 0;

    if (chapter.val().trim() == 0) {
        _errorManager.AddErrorMessage(chapter, String.format(ErrorMessages.RequiredField, ContactUsFieldNames.Chapter));
        errorCount++;
    }

    if (name.val().trim() == "") {
        _errorManager.AddErrorMessage(name, String.format(ErrorMessages.RequiredField, ContactUsFieldNames.Name));
        errorCount++;
    }

    if (email.val().trim().length > 0) {
        if (isEmailValid(email.val()) == false) {
            _errorManager.AddErrorMessage(email, ErrorMessages.InvalidEmail);
            errorCount++;
        }
    }
    else {
        _errorManager.AddErrorMessage(email, String.format(ErrorMessages.RequiredField, ContactUsFieldNames.Email));
        errorCount++;
    }

    if (message.val().trim() == "") {
        _errorManager.AddErrorMessage(message, String.format(ErrorMessages.RequiredField, ContactUsFieldNames.Message));
        errorCount++;
    }

    if (errorCount > 0) {
        _errorManager.ShowErrors();
        return false;
    }
    else {
        return true;
    }
}

function resetContactForm() {
    var spanContactUsMessage = $get(ContactUsElements.SpanContactUsMessage);
    spanContactUsMessage.innerHTML = InformationMessages.ContactFormMessage;

    $(ContactUsElements.JQDdlChapters).val(0);
    $(ContactUsElements.JQTxtName).val("");
    $(ContactUsElements.JQTxtEmail).val("");
    $(ContactUsASPElements.JQTxtMessage).val("");
}

function onSecondIINoneContactInformationError(result) {
    var problems = new Array();
    problems[problems.length] = result.get_message();
    setErrorInformation($get(LayoutElements.DivError), problems);

    hideWaitDialog();
}
