function Twitter()
{
    return Twitter;
}


Twitter.buildItemNode = function(itemData, odd)
{
    var div = new Element('div', {
        'style': 'display: none;'
    }).addClassName('Item ' + (odd ? 'Odd' : 'Even'));
    
    var pubDate = new Element('div').update(itemData.pubDate).addClassName('Date');
    div.appendChild(pubDate);
    
    div.insert(itemData.text);
    
    return div;
}


Twitter.update = function(status, updateId)
{
    //update status
    new Ajax.Request('/twitter/update.json', {
        method:    'post',
        postBody:  '&status=' + status,
        onSuccess: function(t)
        {
            //get new timeline and update list element
            if (undefined != updateId)
            {
                Twitter.getUserTimeline(updateId);
            }
        }
    });
}


Twitter.getUserTimeline = function(updateElementId)
{
    var dolly = $(updateElementId).cloneNode(false);
    
    new Ajax.Request('/twitter/get-user-timeline.json', {
        method:     'get',
        parameters: '&count=5',
        onSuccess:  function(t)
        {
            var data = t.responseJSON;
            for (var i = 0; i < data.length; i++)
            {
                var item = Twitter.buildItemNode(data[i], i % 2);
                dolly.appendChild(item);
            }
            
            var parentNode = $(updateElementId).parentNode;
            parentNode.removeChild($(updateElementId));
            parentNode.appendChild(dolly);

            for (var i = 0; i < dolly.childNodes.length; i++) {
            	Effect.Appear(dolly.childNodes[i], { duration: .5, queue: 'end' });
            	//new Effect.Highlight(dolly.childNodes[i], { queue: 'end' });
            }
        }
    });
}