/**
 * Paginador d'elements
 * --------------------
 * S'encarrega de agrupar un conjunt d'elements i mostrar-los com a elements
 * paginats, mostrant una pàgina per click
 * Es crida sobre el selector dels elements que formen la serie a paginar:
 *
 *   jQuery("div.element-destacat").blockPager();
 *
 * Per defecte farà servir div contenidor amb la classe "pager" que contindrà
 * uns vincles amb les clàsses "previous" i "next" on es vinculen els events per
 * paginar. Exemple:
 *
 *   <div class="pager">
 *     <a href="#" class"previous">Previous</a>
 *     <a href="#" class="next">Next</a>
 *   </div>
 *
 * La classe del paginador així com els vincles es poden especificar durant la
 * crida del plugin així:
 *
 *   jQuery("div.element-destacat").blockPager({
 *     "previous" : "a.anterior",
 *     "next"     : "a.seguent"
 *   });
 */
jQuery.fn.blockPager = function(options) {
    settings = jQuery.extend({
	previous: "div.pager a.previous",
	next: "div.pager a.next"
    }, options);

    var elements = jQuery(this);

    var count = elements.length;

    var current = 1;

    function display() {
	elements.each(function(index) {
	    if (index == current) {
		jQuery( elements[ index ] ).show();
	    } else
		jQuery( elements[ index ] ).hide();
	});
    };

    // Selecciona el seguent element
    function next() {
	current = ( current + 1 ) % count;

	display();
    };

    // Selecciona l'anterior element
    // FIXME: Estaria genial trobar un comptador ciclic invers
    function previous() {
	current = current - 1;
	if (current < 0) 
	    current = count - 1;

	display();
    };

    jQuery(settings.previous).click(function(event) {
	previous();
	event.preventDefault();
    });

    jQuery(settings.next).click(function(event) {
	next();
	event.preventDefault();
    });

    display();
};

