

function CommunitySubscriber(iId, iLang)
{
    var self = this;
    
    self.emailId = iId + '_email';
    self.listnameId = iId + '_listname';
    self.formId = iId + '_form';
    self.url = '/ncp_gen/dmconnect/add.do';
    self.unsuburl = '/ncp_gen/dmconnect/remove.do';
    self.lang = iLang;
    
    self.messages =
        {
            'success' : iId + '_success',
            'failure' : iId + '_failure',
            'bad_email' : iId + '_bad_email',
            'loading' : iId + '_loading'
        };
    
    self.submitting = false;     

    self.subscribe = function()
        {
            if (self.submitting)
                return;
                
            var email = document.getElementById(self.emailId)
            var emailValid = new RegExp('^[^@]+@[^@]+.[a-z]{2,}$', 'i');

            if (email.value.search(emailValid) == -1)
                self.showMessage('bad_email');
            else
            {
                var listName = document.getElementById(self.listnameId);
                var url = self.url + '?email=' + email.value + '&listName=' + listName.value;
                var http = new HttpRequestHandler(true, self.onSubscriptionCompleted);
                self.submitting = true;
                self.hideForm();
                self.showMessage('loading');
                http.getXML(url);
            }            
        };

    self.unsubscribe = function()
        {
            if (self.submitting)
                return;
                
            var email = document.getElementById(self.emailId)
            var emailValid = new RegExp('^[^@]+@[^@]+.[a-z]{2,}$', 'i');

            if (email.value.search(emailValid) == -1)
                self.showMessage('bad_email');
            else
            {
                var listName = document.getElementById(self.listnameId);
                var url = self.unsuburl + '?email=' + email.value + '&listName=' + listName.value;
                var http = new HttpRequestHandler(true, self.onSubscriptionCompleted);
                self.submitting = true;
                self.hideForm();
                self.showMessage('loading');
                http.getXML(url);
            }            
        };
        
    self.onSubscriptionCompleted = function(iUrl, iXml)
        {
            self.submitting = false;

            var ret = iXml.getElementsByTagName('return').item(0);
            if (ret.firstChild.nodeValue == 1)
            {
                self.hideForm();
                self.showMessage('success');
            }
            else
                self.showMessage('failure');
        },
        
    self.showMessage = function(iMessage)
        {
            for (var msg in self.messages)
            {
                var element = document.getElementById(self.messages[msg]);            
                if (msg == iMessage)
                    element.style.display = 'block';
                else
                    element.style.display = 'none';
            }
        },

    self.showForm = function()
        {
            var form = document.getElementById(self.formId)
            form.style.display = 'block';        
        },
        
    self.hideForm = function()
        {
            var form = document.getElementById(self.formId)
            form.style.display = 'none';        
        },        
        
    self.tryAgain = function()
        {
            self.showMessage(null);
            self.showForm();
        }        

};
