var itg_rss = function() {

    /* instance variables */
    var feed_title = 'ITG News';
    var title;
    var feed_url = '/itg/rss/rss.xml';
    var count = 3;
    var index = 0;
    var rssid = 'itgrss';
    var rss;
    var rsstgt;
    var nav;
    var desc;

    return {
        /* public methods */
        init:function() {
            rss = $('itgrss');
            title = new Element('h2').update(feed_title);
            var title_img = new Element('img',{src:'/itg/rss/rss.png',alt:'rss/xml feed',width:'16px',height:'16px'});
            var title_img_a = new Element('a',{href:feed_url,title:'rss/xml feed'}).update(title_img);
            title_img.setStyle({border:'0',paddingLeft:'5px',marginBottom:'-2px',zIndex:'75'});
            title.appendChild(title_img_a);
            rss.insert(title);
            rsstgt = new Element('div',{'id':rssid+'tgt'});
            var prev = new Element('a',{'href':'#','title':'Previous '+count}).update('&larr;');
            var next = new Element('a',{'href':'#','title':'Next '+count}).update('&rarr;');
            nav = new Element('div',{'id':rssid+'nav'});
            desc = new Element('div',{'id':rssid+'desc'});
            nav.appendChild(prev);
            nav.appendChild(next);
            rss.appendChild(nav);
            rss.appendChild(rsstgt);
            rss.appendChild(desc);
            desc.hide();
            prev.observe('click',itg_rss.prev);
            next.observe('click',itg_rss.next);
            get_items();
        },

        prev:function(event) {
            index -= count;
            get_items();
            event.stop();
        },

        next:function(event) {
            index += count;
            get_items();
            event.stop();
        },

        show_description:function(comments,text,link) {
            nav.hide();
            rsstgt.hide();
            var h4 = new Element('h4').update(comments);
            var p_desc = new Element('p').addClassName('desc').update(text);
            var a_link = new Element('a',{href:link}).update(link);
            var p_link = new Element('p').update('Link: ');
            p_link.insert(a_link);
            p_link.setStyle({marginTop:'5px',fontStyle:'italic'});
            desc.update(h4);
            desc.insert(p_desc);
            desc.insert(p_link);
            var p_back = new Element('p');
            p_back.setStyle({textAlign:'right'});
            var a_back = new Element('a',{href:'#'}).update('Back');
            a_back.observe('click',itg_rss.show_items);
            p_back.update(a_back);
            desc.insert(p_back);
            desc.show();
        },

        show_items:function(event) {
            desc.hide();
            rsstgt.show();
            nav.show();
            event.stop();
        }
    };

    /* private methods */
    function get_items() {
        new Ajax.Request('/itg/rss/rssasjson.php?i='+index+'&c='+count, {
            method: 'get',
            onSuccess: update_items
        });
    } 

    function update_items(transport) {
        var jsontext = transport.responseText;
        items = jsontext.evalJSON().items;
        var update = '';
        rsstgt.innerHTML='';
        items.each(function(item) {
            var urgent = false;
            if (item.category == 'urgent') urgent = true;
            if (urgent) item.title = '&#187;'+item.title+'&#171;'; 
            var div = new Element('div').addClassName('newsitem');
            var a = new Element('a',{href:'#',title:'More information'}).update(item.title);
            a.observe('click',function(event) {
                itg_rss.show_description(item.comments,item.description,item.link);
                event.stop();
            });
            var h3 = new Element('h3').update(a);
            if (urgent) new Effect.Highlight(h3);
            var time = format_date(item.pubDate);
            var p_date = new Element('p').addClassName('date').update(time);
            div.insert(h3);
            div.insert(p_date);
            rsstgt.insert(div);
        });
    }

    function format_date(dat) {
        var d = new Date(dat);
        var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
        var month = months[d.getMonth()];
        var hours = d.getHours();
        var mer = hours < 12 ? 'AM':'PM';
        phours = hours%12 == 0 ? 12 : hours%12;
        var mins = String('0'+d.getMinutes()).slice(-2);
        return month+' '+d.getDate()+', '+d.getFullYear()+' '+phours+':'+mins+' '+mer;
    }

}();
Event.observe(window,'load',function() {
    itg_rss.init();
});

