
function MyHudsEmailUpdater()
{    
    var address;
    var editField;
    var editButton;
    var cancelButton;
    var saveButton;
    var ajaxIndicator;
    var form;
    var editURL;
    var editing;    

    function main()
    {
        form = $('myhuds-mailbox');
        if(form)
        {
            editURL      = form.action;
            address      = $('myhuds-email-address');
            editField    = $('myhuds-edit-field');
            editButton   = $('myhuds-edit-button');
            cancelButton = $('myhuds-cancel-button');
            saveButton   = $('myhuds-save-button');
            indicator    = $('myhuds-indicator');       
        
            editButton.onclick   = edit;
            saveButton.onclick   = save;
            cancelButton.onclick = cancel;
            form.onsubmit        = function() { save(); return false; };
        }
    }

    function edit()
    {
        editing = true;
        editField.value = '';
        
        address.style.display      = 'none';
        editButton.style.display   = 'none';
        editField.style.display    = 'inline';
        saveButton.style.display   = 'block';
        cancelButton.style.display = 'block';

        editField.focus();
        return false;
    }

    function cancel()
    {
        if(editing)
        {
            editing = false;
            address.style.display      = 'inline';
            editButton.style.display   = 'block';
            editField.style.display    = 'none';
            saveButton.style.display   = 'none';
            cancelButton.style.display = 'none';
            indicator.style.display    = 'none';
        }

        return false;
    }

    function save()
    {
        if(editing)
        {
            saveButton.style.display   = 'none';
            cancelButton.style.display = 'none';
            indicator.style.display    = 'inline';
            
            // send ajax request
            new ajax(editURL, 
                {
                    method:     'post',
                    postBody:   'email=' + editField.value,
                    onComplete:  saveComplete
                }
            );
        }

        return false;
    }

    function saveWaiting()
    {
        saveButton.style.display   = 'none';
        cancelButton.style.display = 'none';
        indicator.style.display    = 'inline';
    }

    function saveComplete(response)
    {        
        if(response.responseText == 'OK')
        {
            address.innerHTML = editField.value;
        }
        else
        {
            alert(response.responseText);
        }
        
        cancel();
    }
   
    if(window.addEventListener)
        window.addEventListener('load', main, false);
    else if(window.attachEvent)
        window.attachEvent('onload', main);
}
if(document.createElement && document.getElementsByTagName)
        MyHudsEmailUpdater();
