$(document).ready(function () {

    $('.CSWFeed .template').hide();

    $('.CSWFeed').each(function () {
        updateFeed($(this));
    });

});

function updateFeed(item) {

    var feed  = item.data('feed');
    var count = item.data('count');

    if (!feed) {
        return false;
    }

    if (count < 1 || count > 10) {
        count = 10;
    }

    // fetch feed
    ajaxRpc({
        model:  'CSWCurl',
        method: 'getXML',
        datas:  { data: { url: feed } },
        type:   'xml',
        callback: function(xml) {

            var type, source, $items;
		    var months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'];

            // feed type
            switch (true) {
                case $(xml).find('channel').length == 1:
                    type = 'rss';
                    source = $(xml).find('link:first').text()
                    $items = $(xml).find('item');
                break;
                case $(xml).find('feed').length == 1:
                    type = 'atom';
                    source = $(xml).find('link:first').attr('href');
                    $items = $(xml).find('entry');
                break;
                default:
                    return false;
            }

            // set source
            $('.feedSource .slot', item).html(source);

            var $feedContent = $('.feedContent', item);
            // clear feed list
            $feedContent.empty();

            // original template
            var $template = $('.itemNews.template', item);

            $items.each(function (index) {

                if (index + 1 > count) return false;

                var $item = $(this);

                switch (type) {
                    case 'rss':
                        var title = $item.find('title').text();
                        var link  = $item.find('link').text();
                        var desc  = $item.find('description').text();
                        var date  = $item.find('pubDate').text();
                    break;
                    case 'atom': // atom
                        var title = $item.find('title').text();
                        var link  = $item.find('link').first().attr('href');
                        var desc  = $item.find('content').text();
                        if (!desc) desc = $item.find('summary').text();
                        var date  = $item.find('updated').text();
                    break;
                }

                // clean description
                desc = strip_tags(desc);

                // Format date
				// test format iso
				if(date.indexOf('T')){
					dateIso = new Date();
					date = dateIso.setISO8601(date);
				}
                date = new Date(date);
				date = date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear();
				

                var $html  = $template.clone().removeClass('template').show();
                $html.find('a.link,a.btnMore').attr('href', link);
                $html.find('.title a').html(title);
                $html.find('.date').html(date);
                $html.find('.txt .slot').html(desc); 

                $feedContent.append($html);
            });
        }
    });
}

Date.prototype.setISO8601 = function(dString){

	var regexp = /(\d\d\d\d)(-)?(\d\d)(-)?(\d\d)(T)?(\d\d)(:)?(\d\d)(:)?(\d\d)(\.\d+)?(Z|([+-])(\d\d)(:)?(\d\d))/;

	if (dString.toString().match(new RegExp(regexp))) {
		var d = dString.match(new RegExp(regexp));
		var offset = 0;

		this.setUTCDate(1);
		this.setUTCFullYear(parseInt(d[1],10));
		this.setUTCMonth(parseInt(d[3],10) - 1);
		this.setUTCDate(parseInt(d[5],10));
		this.setUTCHours(parseInt(d[7],10));
		this.setUTCMinutes(parseInt(d[9],10));
		this.setUTCSeconds(parseInt(d[11],10));
		if (d[12])
			this.setUTCMilliseconds(parseFloat(d[12]) * 1000);
		else
			this.setUTCMilliseconds(0);
		if (d[13] != 'Z') {
			offset = (d[15] * 60) + parseInt(d[17],10);
			offset *= ((d[14] == '-') ? -1 : 1);
			this.setTime(this.getTime() - offset * 60 * 1000);
		}
	}
	else {
		this.setTime(Date.parse(dString));
	}
	return this;
};





