﻿jQuery.getFeed = function(options) {

    options = jQuery.extend({
    
        url: null,
        data: null,
        success: null
        
    }, options);

    if(options.url) {

        $.ajax({
            type: 'GET',
            url: options.url,
            data: options.data,
            dataType: 'xml',
            success: function(xml) {
                var feed = new JFeed(xml);
                if(jQuery.isFunction(options.success)) options.success(feed);
            },
            error:function(msg){
                options.error("出错啦，请稍后重试");
            }
        });
    }
};

function JFeed(xml) {
    if(xml) this.parse(xml);
};

JFeed.prototype = {

    type: '',
    version: '',
    title: '',
    link: '',
    description: '',
    parse: function(xml) {
        if(jQuery('channel', xml).length == 1) {
        
            this.type = 'rss';
            var feedClass = new JRss(xml);

        } else if(jQuery('feed', xml).length == 1) {
        
            this.type = 'atom';
            var feedClass = new JAtom(xml);
        }
        
        if(feedClass) jQuery.extend(this, feedClass);
    }
};

function JFeedItem() {};

JFeedItem.prototype = {

    title: '',
    link: '',
    description: '',
    updated: '',
    id: ''
};

function JAtom(xml) {
    this._parse(xml);
};

JAtom.prototype = {
    
    _parse: function(xml) {
    
        var channel = jQuery('feed', xml).eq(0);

        this.version = '1.0';
        this.title = jQuery(channel).find('title:first').text();
        this.link = jQuery(channel).find('link:first').attr('href');
        this.description = jQuery(channel).find('subtitle:first').text();
        this.language = jQuery(channel).attr('xml:lang');
        this.updated = jQuery(channel).find('updated:first').text();
        
        this.items = new Array();
        
        var feed = this;
        
        jQuery('entry', xml).each( function() {
        
            var item = new JFeedItem();
            
            item.title = jQuery(this).find('title').eq(0).text();
            item.link = jQuery(this).find('link').eq(0).attr('href');
            item.description = jQuery(this).find('content').eq(0).text();
            item.updated = jQuery(this).find('updated').eq(0).text();
            item.id = jQuery(this).find('id').eq(0).text();
            
            feed.items.push(item);
        });
    }
};

function JRss(xml) {
    this._parse(xml);
};

JRss.prototype  = {
    
    _parse: function(xml) {
    
        if(jQuery('rss', xml).length == 0) this.version = '1.0';
        else this.version = jQuery('rss', xml).eq(0).attr('version');

        var channel = jQuery('channel', xml).eq(0);
    
        this.title = jQuery(channel).find('title:first').text();
        this.link = jQuery(channel).find('link:first').text();
        this.description = jQuery(channel).find('description:first').text();
        this.language = jQuery(channel).find('language:first').text();
        this.updated = jQuery(channel).find('lastBuildDate:first').text();
    
        this.items = new Array();
        
        var feed = this;
        
        jQuery('item', xml).each( function() {
        
            var item = new JFeedItem();
            
            item.title = jQuery(this).find('title').eq(0).text();
            item.link = jQuery(this).find('link').eq(0).text();
            item.description = jQuery(this).find('description').eq(0).text();
            item.updated = jQuery(this).find('pubDate').eq(0).text();
            item.id = jQuery(this).find('guid').eq(0).text();
            
            feed.items.push(item);
        });
    }
};
function getFeed(rlink,result,durl)
{
    var obj  = "#"+result;
    var obj1 = "#"+rlink;
    if(durl==-1)
    {
        jQuery(obj).html("<div style='width: 100%; text-align: center; height: 20px; margin:10px 0px;'><img src='/skin/blue/images/ico_blog_space.gif' style='border:0'/>您还没有订阅</div>");
        return;
    }
    durl = "/Services/RssFeedProxy.ashx?ran="+Math.random( )+"&rssurl="+durl;
    jQuery(obj).html("<img src='/images/loading.gif' title='正在加载，请稍后。。。' style='border:0'>正在加载，请稍后。。。");
    jQuery.getFeed({
        url:durl,
        success: function(feed) {
            var html = '';
            
            for(var i = 0; i < feed.items.length && i < 4; i++) {
                
                var item = feed.items[i];
                
		 						html +="<li><div class='pic'>"+ item.description + "</div>";
		 						html +="<div class='text1'><a href='"+item.link+"' target='_bank' title='"+item.title+"'>"+item.title+"</a></div></li>";
            }
            if(html=='') {
            	html="<div style='width: 100%; text-align: center; height: 20px; margin:10px 0px;'><img src='/skin/blue/images/ico_blog_space.gif' style='border:0'/>暂无订阅结果</div>"
            }
            jQuery(obj).html(html);
            jQuery(obj1).attr("href",feed.link);
        } ,
        error:function(msg){
            jQuery(obj).html("<div style='width: 100%; text-align: center; height: 20px; margin:10px 0px;'><img src='/skin/blue/images/ico_blog_space.gif' style='border:0'/>"+msg+"</div>");
        }   
    });
//  $(obj).ajaxError(function(request, settings){
//        $(this).html("<dl><dd>error</dd></dt>");
//  });
 };







