/*
 * 
 * Dilbert plugin 1.0
 * $Date:2008-05-09 18:48:38 +0200 (ven, 09 mag 2008) $
 * $Rev:11 $
 * @requires jQuery v1.2.3
 * 
 * Copyright (c) 2008 Massimiliano Balestrieri
 * Examples and docs at: http://maxb.net/blog/
 * Licensed GPL licenses:
 * http://www.gnu.org/licenses/gpl.html
 * 
 */

if(!window.Dilbert)
    var Dilbert = {};
    
Dilbert.Data = (function(){

    //private static attributes
    var widgets = 0;

    return function(elem){
        
        //public attrs
        this.reference  = elem;
        this.datefeed   = '';
	    this.title      = 'Dilbert Daily Strip';
	    this.desc       = '';
	    this.pages      = 1;
	    this.jpages     = [];
	    this.current    = 1;
        this.options    =  {};
        
        //constructor
        widgets++;
        //console.log("Incremento il contatore statico di istanze : " + widgets);
        
    }

})();    

Dilbert.jQuery = {
    build     : function(options)
    {
        
        
        return this.each(
            function(nr)
            {
            	dilbert = this.dilbert = new Dilbert.Data(this);
                dilbert.options = options || {};
                //setto un po' di variabili
                if(!options.feed)
                    dilbert.options.feed  = 'http://feeds.feedburner.com/DilbertDailyStrip';
                if(!options.proxy)
                    dilbert.options.proxy || 'proxy.php';
                     
                Dilbert.jQuery.get(1,this,true);            
            }
        );
        
    },
    get : function(num,el,first){
        //console.log(num);
        jQuery.ajax({
            dataType : 'xml',
            url      :  el.dilbert.options.proxy,
            data     : 'url=' + el.dilbert.options.feed,
            success: function(rss){
                //console.log(data.firstChild);
                var titles = rss.getElementsByTagName("title");
                var link = rss.getElementsByTagName("link");
                var desc = rss.getElementsByTagName("description");
                el.dilbert.pages = titles.length - 1;
                el.dilbert.title = titles[0].firstChild.nodeValue;
                el.dilbert.date  = titles[num].firstChild.nodeValue;
                el.dilbert.desc = desc[num].firstChild.nodeValue;
                
                //console.log(Dilbert.title);
                //console.log(Dilbert.date);
                if(first){
                    Dilbert.jQuery.gui(el);
                }else{
                    jQuery(".dilbert-title", el).text(el.dilbert.title + ' - ' + el.dilbert.date);
                    jQuery(".dilbert-desc", el).html(el.dilbert.desc);
                    Dilbert.jQuery.reset_toolbar(el);
                    //console.log(Dilbert.current);
                    el.dilbert.jpages[(el.dilbert.current - 1)].css({"color":"red","text-decoration":"none"});
                    
                }
            }
         }); 
    },
    gui : function(el)
    {
        jQuery(el).append('<div class="dilbert-jquery">');
        var jcontainer = jQuery(".dilbert-jquery", el);
        jcontainer.append('<div class="dilbert-title-cont"><div class="dilbert-title" re="#"></div><div class="dilbert-pager"></div>');
        jQuery(".dilbert-title", el).text(el.dilbert.title + ' - ' + el.dilbert.date);
        //console.log(Dilbert.title);
        //console.log(Dilbert.date);
        jcontainer.append('<div class="dilbert-desc">');
        jQuery(".dilbert-desc", el).html(el.dilbert.desc);
        
        jcontainer.append('');
        var pager = jQuery(".dilbert-pager", el);
        
        var first = jQuery('<a href="#"></a>')
            .text("<<")
            .click(function(){
                el.dilbert.current = 1;
                Dilbert.jQuery.get(1, el);
                return false;
            });            
        var prev = jQuery('<a href="#"></a>')
            .text("<")
            .click(function(){
                if(el.dilbert.current > 1)
                    Dilbert.jQuery.get(--el.dilbert.current, el);
                return false;
            });            
        var next = jQuery('<a href="#"></a>')
            .text(">")
            .click(function(){
                if(el.dilbert.current < el.dilbert.pages)
                    Dilbert.jQuery.get(++el.dilbert.current, el);
                return false;
            });            
        var last = jQuery('<a href="#"></a>')
            .text(">>")
            .click(function(){
                el.dilbert.current = el.dilbert.pages;
                Dilbert.jQuery.get(el.dilbert.pages, el);
            return false;
            });            
            
        pager.append(first);
        pager.append(prev);
        for(var i = 0;i < el.dilbert.pages;i++){
            var link = jQuery('<a href="#"></a>')
                .text((i + 1))
                .click(function(){
                	el.dilbert.current = parseInt(jQuery(this).text());
                    Dilbert.jQuery.get(el.dilbert.current, el);
                    return false;
                });            
            if((el.dilbert.current-1) == i)
                link.css({"color":"red","text-decoration":"none"});
            
            el.dilbert.jpages[i] = link; 
            pager.append(link);
        }
        pager.append(next);
        pager.append(last);
        
        jQuery(document).keydown(function(e){
            if (e == null) { // ie
                keycode = event.keyCode;
            } else { // mozilla
                keycode = e.which;
            }
            if(keycode == 190){ // display previous image
                if(el.dilbert.current > 1){
                     //console.log(Dilbert.current);
                    Dilbert.jQuery.get(--el.dilbert.current, el);
                }
            } else if(keycode == 188){ // display next image
                if(el.dilbert.current < el.dilbert.pages){
                    //console.log(Dilbert.current);
                    Dilbert.jQuery.get(++el.dilbert.current, el);
                }
            }  
        });
        
    },
    reset_toolbar : function(el){
        jQuery(".dilbert-pager>a", el).css({"color":"black","text-decoration":"underline"});
    }
};  
jQuery.fn.dilbert = Dilbert.jQuery.build;

