﻿Event.observe(window, 'load', InitSubscribeForm);

var objTbSubscribeName = null;
var objTbSubscribeEmail = null;
var oInfoBox = null;
var oInfoMessagesList = null;
var oInfoBoxTitle = null;
var oBtnSubscribeSubmit = null;

var confirmCSSName = 'confirmedBox';
var errorCSSName = 'errorBox';

function InitSubscribeForm() {
    objTbSubscribeName = $('tbSubscribeName');
    objTbSubscribeEmail = $('tbSubscribeEmail');    
    
    oInfoBox = $('subscriptionInfoBox');
    oInfoMessagesList = $('subscriptionInfoMsgs');
    oInfoBoxTitle = $('subscriptionInfoBoxTitle');
    oBtnSubscribeSubmit = $('btnSubscribeSubmit');
    
    objTbSubscribeName.initText = 'name';
    objTbSubscribeEmail.initText = 'email';
    
    oBtnSubscribeSubmit.initText = 'Join mailing list';
    
    Event.observe(objTbSubscribeName, 'focus', EmptyInputFieldEvent);
    Event.observe(objTbSubscribeEmail, 'focus', EmptyInputFieldEvent);
    
    Event.observe(objTbSubscribeName, 'blur', RevertInputLabelEvent);
    Event.observe(objTbSubscribeEmail, 'blur', RevertInputLabelEvent);
    
    InitInputField(objTbSubscribeName);
    InitInputField(objTbSubscribeEmail);
    
    oBtnSubscribeSubmit.value = oBtnSubscribeSubmit.initText;    
}

function Subscribe_Click() {
    // empty the input fields
    EmptyInputField(objTbSubscribeName);
    EmptyInputField(objTbSubscribeEmail);

    oBtnSubscribeSubmit.disabled = true;
    oBtnSubscribeSubmit.addClassName('disabledButton');
    oBtnSubscribeSubmit.value = 'Subscribing, please wait ...';

    Ed.Website.AjaxService.SubscribeToNewsletter(objTbSubscribeName.value, objTbSubscribeEmail.value, Subscribe_CallBack);
}

function Subscribe_CallBack(response) {
    if(response.error == null) {
        
        // clear the messages list
        oInfoMessagesList.innerHTML = '';
        
        // show the error message if the test hasn't been passed
        if (!response.value.Passed) {
            if (oInfoBox.hasClassName(confirmCSSName)) oInfoBox.removeClassName(confirmCSSName);
            oInfoBox.addClassName(errorCSSName);
            oInfoBoxTitle.show();
            
        } else {
            if (oInfoBox.hasClassName(errorCSSName)) oInfoBox.removeClassName(errorCSSName);
            oInfoBox.addClassName(confirmCSSName);
            oInfoBoxTitle.hide();
            
            // clear the values after subscription
            objTbSubscribeName.value = '';
            objTbSubscribeEmail.value = '';
            RevertInputLabel(objTbSubscribeName);
            RevertInputLabel(objTbSubscribeEmail);
        }
        
        for (var i = 0; i < response.value.Messages.length; i++) {                
            var msgItem = document.createElement('li');
            msgItem.innerText = response.value.Messages[i];
            msgItem.innerHTML = response.value.Messages[i];
            oInfoMessagesList.appendChild(msgItem);
        }
        oInfoBox.show();
        oBtnSubscribeSubmit.disabled = false;
        oBtnSubscribeSubmit.removeClassName('disabledButton');
        oBtnSubscribeSubmit.value = oBtnSubscribeSubmit.initText;
        
        RevertInputLabel(objTbSubscribeName);
        RevertInputLabel(objTbSubscribeEmail);
        
    } else alert(response.error.Message);
}

function InitInputField(obj) {
    obj.value = obj.initText;
    obj.addClassName('label');
}

function EmptyInputFieldEvent(event) {
    var element = Event.element(event);    
    EmptyInputField(element);
}

function EmptyInputField(element) {
    if (element && element.value == element.initText) {
        element.value = '';
        element.removeClassName('label');
    }
}

function RevertInputLabelEvent(event) {
    var element = Event.element(event);
    RevertInputLabel(element);
}

function RevertInputLabel(element) {
    if (element && element.value.length == 0) InitInputField(element);
}
