// ajaxUserEmailSubscription.js
   var formId = 'BTForm';
   var enclosingId = 'email-sub';
   var errorTextId = 'error-text';
var ajaxUserEmailSubscriptionFunc = {
    
    userEmailSubscriptionFunc : function(inFormId, inEnclosingId, inErrorTextId){
		dojo.require("wc.service.common");
        // Set default values so this is compatible with the existing code.
         
        if ( inFormId )      { formId = inFormId };
        if ( inEnclosingId ) { enclosingId = inEnclosingId };
        if ( inErrorTextId ) { errorTextId = inErrorTextId };
        
        //Main logic
        console.debug("formId=", formId, "enclosingId=", enclosingId, "errorTextId=", errorTextId);
        wc.service.declare({
            id: "AjaxUserEmailSubscription",
            actionId: "userEmailSubscription",
            url: (location.protocol == 'http') ? "AjaxUserEmailSubscription" : "AjaxUserEmailSubscriptionS",
            formId: formId,
            successHandler: function(serviceResponse) {
                var f = dojo.byId(formId);
                if ( f ) {
                    if ( f.Email ) {
                        f.Email.value = 'Thanks for signing up!';
                    }
                }
                setTimeout(removeFieldsErrors, 1500);
            
            },
            failureHandler: function(serviceResponse) {
                LowesErrorMessageUserEmailSubscription(serviceResponse);
            }
        });            
        wc.service.invoke("AjaxUserEmailSubscription");
        
        
    } //end userEmailSubscriptionFunc
} //end ajaxUserEmailSubscriptionFunc

	//Helper functions
    //===================
    function LowesErrorMessageUserEmailSubscription(serviceResponse) {
    
        var innerText = "";
        var errors = serviceResponse.errorMessageParam;
        var lowesErrors = "";
        var userFriendlyNames = "";
        dojo.forEach(errors, function(field){
            for (var key in field){
                if (field[key] != 'null' && key == 'errorFieldNames') {
                    lowesErrors = field[key];
                    if(dojo.isArrayLike(lowesErrors)){
                        lowesErrors = lowesErrors;    
                    }else{
                        lowesErrors =  [lowesErrors];    
                    }                            
                }
                if (field[key] != 'null' && key == 'userFriendlyFieldNames') {
                    userFriendlyNames = field[key];
                    if(dojo.isArrayLike(userFriendlyNames)){
                        userFriendlyNames = userFriendlyNames;    
                    }else{
                        userFriendlyNames =  [userFriendlyNames];    
                    }                            
                }
                if (field[key] != 'null' && key == 'fieldsHasToHideFriendlyName') {
                    fieldsHasToHideFriendlyName = field[key];
                    if(dojo.isArrayLike(fieldsHasToHideFriendlyName)){
                        fieldsHasToHideFriendlyName = fieldsHasToHideFriendlyName;
                    }else{
                        fieldsHasToHideFriendlyName =  [fieldsHasToHideFriendlyName];
                    }                            
                }
            }
        });
    
        var userFriendlyFieldName= "";
        var lowesFieldsHasToHideFriendlyName;
            dojo.forEach(fieldsHasToHideFriendlyName, function(lowesFieldToHide){
                lowesFieldsHasToHideFriendlyName = lowesFieldToHide;
            });
        dojo.forEach(userFriendlyNames, function(lowesFieldName){
                lowesUserFriendlyNames = lowesFieldName;
            });
            dojo.forEach(lowesErrors, function(lowesField){
                var fieldName;
                for (var key in lowesField){
                    fieldName = "";
                    for(var fieldKey in lowesUserFriendlyNames){
                        if( fieldKey == key){
                            if(lowesFieldsHasToHideFriendlyName[fieldKey]!='1' &&
                                    lowesUserFriendlyNames[fieldKey]!=""){
                            fieldName = lowesUserFriendlyNames[fieldKey] ;
                            }
                        }
                    }
                    errorMessageTemp = lowesField[key] + " " + fieldName;
                       displayFieldsErrors(errorMessageTemp);
                }
            });    
    }
    //===================
    function displayFieldsErrors(errorMessage){
        errorContent='<br /><span class="error-text">'+errorMessage+'</span>';
        if(dojo.byId(errorTextId)) dojo.byId(errorTextId).innerHTML=errorContent;
        if(dojo.byId(errorTextId)) dojo.byId(errorTextId).style.display='block';
        if(dojo.byId(enclosingId)) dojo.addClass(dojo.byId(enclosingId), 'email-error');    
    }
    //===================
    function removeFieldsErrors(){
        idError="error-text";
        errorContent='';
        if(dojo.byId(errorTextId)) dojo.byId(errorTextId).innerHTML=errorContent;
        if(dojo.byId(errorTextId)) dojo.byId(errorTextId).style.display='none';
        if(dojo.byId(enclosingId)) dojo.removeClass(dojo.byId(enclosingId), 'email-error');
        
        var f = dojo.byId(formId);
        if ( f ) {
            if ( f.Email ) {
                f.Email.value = '';
            }
        }
    }
    //===================
    function pause(numberMillis) {
          var now = new Date();
          var exitTime = now.getTime() + numberMillis;
          while (true) {
            now = new Date();
            if (now.getTime() > exitTime) {
               return;
            }
        }
      }
    //===================    