var rsslen = 4;

function read_rss_feed(items) {

	var thtml = '<ul>'; 
		
	for (var i = 0; i < rsslen; i++) {
		var x = new Array();

		if (!(items.item(i))) break; 

		x['title'] 	 	 = ''; 
		x['pubDate']     = ''; 
		x['description'] = '';
		
		var nodes = items.item(i).childNodes;

		for (var j = 0; j < nodes.length; j++) {
			if (nodes.item(j).nodeName  != '#text')  {
				if (nodes.item(j).firstChild && nodes.item(j).firstChild.nodeValue) 
					x[nodes.item(j).tagName] = nodes.item(j).firstChild.nodeValue;
			}
		}
		
        // for case of RSS from pesquisa.sapo.pt
		if (! x['pubDate']) { // Default value
			x['pubDate'] = x['dc:date'];
		}
		
		x['pubDate'] = get_pretty_date(x['pubDate']);
		
		x['description'] = SAPO.Utility.String.stripTags(x['description']);
		x['description'] = x['description'].replace(/\n/g, '');
		x['description'] = x['description'].replace(/  /g, '');
		x['description'] = x['description'].replace(/'/g, '&apos;');
		x['description'] = x['description'].replace(/"/g, '&quot;');
		
		var titlength  = x['title'].length;
		var desclength = x['description'].length;
		
		if (desclength > 100) {
			x['description'] = x['description'].substring(0,100) + '...'; // encortar a descricao
		}			
		
		if (titlength > 30) {
			x['title'] = x['title'].substring(0,30) + '...'; // encortar o titulo
		}
		
		thtml = thtml
			  + '<li>'
			  + '<a href="' 
			  + x['link']
			  + '" title="'
			  + x['description']
			  + '">' 
			  + x['pubDate'] + ' - ' + x['title'] + '</a>'
			  + '</li>';
	}
    return thtml;
}

function parse_rss_feed(t) {
	rdom = t.responseXML;
//	tdom = t.responseText;

//	alert(rdom);
//	alert(new XMLSerializer().serializeToString(rdom)); // Firefox
//	alert(tdom);
	
	var d = document.getElementById('feed_dialog_container');
	if (rdom == null || req.status != 200) {
		d.innerHTML = 'N&atilde;o existem resultados';
		return;
	}
	
	var blogtitle = rdom.getElementsByTagName('title')[0].firstChild.nodeValue;
	var blogrss   = rdom.getElementsByTagName('link')[0].firstChild.nodeValue;
	
	var items 	  = rdom.getElementsByTagName('item');

	if ( 0==items.length ) {
		d.innerHTML = 'N&atilde;o existem resultados';
		return;
	}

	thtml = read_rss_feed(items) + '<li class="div">&nbsp;</li>'
		  + '<li class="subscrever">' 
		  + '<a href="' 
		  + blogrss
		  + '" class="rss_blog" title="Subscrever o feed RSS desta fonte \'' 
		  + blogtitle
		  + '\'">Subscrever o feed RSS desta fonte</a>'
		  + '</li>'
		  + '</ul>';
	
	d.innerHTML = thtml;
	
} // parse_rss_data

function parse_rss_feed_services(t) {
	rdom = t.responseXML;
//	tdom = t.responseText;

//	alert(rdom);
//	alert(tdom);
	
	var d = document.getElementById('feed_dialog_container');
	if (rdom == null || req.status != 200) {
		d.innerHTML = 'N&atilde;o existem resultados nos services';
        //fallback
        load_rss_data(global, global);
        return;
	}

	var blogtitle = rdom.getElementsByTagName('title')[0].firstChild.nodeValue;
	var blogrss   = rdom.getElementsByTagName('link')[0].firstChild.nodeValue;
	var items 	  = rdom.getElementsByTagName('item');
	
	if ( 0==items.length ) {
		d.innerHTML = 'N&atilde;o existem resultados';
        //fallback
        load_rss_data(global, global);
		return;
	}

	thtml = read_rss_feed(items) + '<li class="div">&nbsp;</li>'
		  + '<li>' 
		  + '<a href="' 
		  + globalrss
		  + '" class="rss_blog" title="Subscrever o feed RSS do blog \'' 
		  + blogtitle
		  + '\'">Subscrever o feed RSS deste blog</a>'
		  + '</li>'
		  + '</ul>';
	
	d.innerHTML = thtml;
	
} // parse_rss_data_services

function process_rss_data () {
    if (req.readyState == 4) {
/*         if (req.status == 200)  */
        parse_rss_feed(req);
    }
} // process_rss_data

function process_rss_data_services () {
    if (req.readyState == 4) {
        parse_rss_feed_services(req);
    }
} // process_rss_data
function load_rss_noticias(hostname) { 
    var url = '?barra=noticias&filter='+ hostname +'&sortby=&rss=1';
    load_rss(hostname, url, 0 );
} // load_rss_noticias

function load_rss_data(blog, blogname, rss) { 
    global=blog;
    globalrss=rss;

    //alert ("blog="+blog+","+ blogname);
    if (blog != blogname) {
        var url  = '/blogs/rss?blog=' + blog;
        load_rss(blogname, url, 1 );
    } else {
        var url = '?barra=blogs&filter='+ blog +'&sortby=&rss=1';
        load_rss(blogname, url, 0 );
    }

} // load_rss_data

function load_rss(blogname, url, type) { 
	var d = document.getElementById('feed_dialog_container');
	d.innerHTML = '<p><img style="vertical-align: middle" src="/rp/http_static/images/loading.gif"> A carregar o feed RSS de <b>'+ blogname +'</b> ...</p>';

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        if (type)
            req.onreadystatechange = process_rss_data_services;
        else
            req.onreadystatechange = process_rss_data;
        req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            if (type)
                req.onreadystatechange = process_rss_data_services;
            else
                req.onreadystatechange = process_rss_data;
            req.open("GET", url, true);
            req.send();
        }
    }
} // load_rss

function get_pretty_date(timestr) {
	var text = timestr;
	var year  = timestr.slice(0,  4);
	var month = timestr.slice(5,  7);
	var day   = timestr.slice(8,  10);
	var hour  = timestr.slice(11, 13);
	var min   = timestr.slice(14, 16);
	var secs  = timestr.slice(17, 19);
	
	var today    = new Date();
	var curyear  = today.getFullYear();
	var curmonth = today.getMonth();
	var curday   = today.getDate();
	var curhour  = today.getHours();
	var curmin	 = today.getMinutes();
	var cursecs  = today.getSeconds();
    var dias_pt = new Array();
    dias_pt['Mon'] = 'Seg';
    dias_pt['Tue'] = 'Ter';
    dias_pt['Wed'] = 'Qua';
    dias_pt['Thu'] = 'Qui';
    dias_pt['Fri'] = 'Sex';
    dias_pt['Sat'] = 'Sab';
    dias_pt['Sun'] = 'Dom';
    var mes_pt =new Array();
    mes_pt["Jan"] ="Jan";
    mes_pt["Feb"] ="Fev";
    mes_pt["Mar"] ="Mar";
    mes_pt["Apr"] ="Abr";
    mes_pt["May"] ="Mai";
    mes_pt["Jun"] ="Jun";
    mes_pt["Jul"] ="Jul";
    mes_pt["Aug"] ="Ago";
    mes_pt["Sep"] ="Set";
    mes_pt["Oct"] ="Out";
    mes_pt["Nov"] ="Nov";
    mes_pt["Dec"] ="Dez";
	
	var diff = Date.UTC(curyear, curmonth, curday, curhour, curmin, cursecs) - Date.UTC(year, (month-1), day, hour, min, secs);
	diff = diff / 1000; // seconds
	if (diff < 5400) {
		var tdiff = diff / 60;
		tdiff = Math.round(tdiff);
		
		text = "h&aacute; " + tdiff + " minuto";
		
		if (tdiff != 1) 
			text = text + "s";
	} else if (diff < 86400 ) {
		var tdiff = diff / 60;
		tdiff = Math.round(tdiff)
		tdiff = tdiff / 60;
		tdiff = Math.round(tdiff);
		
		text = "h&aacute; " + tdiff + " hora";
		if (tdiff != 1)
			text = text + "s";
	} else {
        if (text.match(/GMT/)) { 
            text = text.replace(/ \d\d\d\d \d\d:\d\d:\d\d GMT$/,'');
            var dia = text.match(/^\w\w\w/);
            text = text.replace(dia, dias_pt[dia]);
            var mes = text.match(/\w\w\w$/);
            text = text.replace(mes, mes_pt[mes]);
        } else {
		    text = text.replace('T', ' ');
		    text = text.replace('Z', '');
   		    if (text.length > '0000-00-00 00:00:00'.length) {
			    text = text.substring(0, '0000-00-00 00:00:00'.length);
		    }
		    text = text.substring(0, '0000-00-00'.length); // retirar as horas
        }
	}

	return text;
}	
