/*!
 * jquery.hrsep.js - Separate content in blocks.
 *
 * Copyright (c) 2010 Dendritas
 * Author: Luis Alejandro González Miranda
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 */

(function($) {
	var defaults = {
		separator: /<hr( *\/)?>/i,
		width: null,
		height: null,
		rotate: false,
		prevHTML: 'Anterior',
		nextHTML: 'Siguiente'
	}, windowLoaded = false;
	$(window).bind('load.hrsep', function() { windowLoaded = true; });
	$.hrsep = function(e, o) {
		this.options = $.extend({}, defaults, o || {});
		this.container = $(e);
		this.blocks_tmp = this.container.html().split(this.options.separator);
		this.blocks = [];
		this.prevClick = function() {
			var c = $(this).parent().parent().parent().find('.hrsep-item');
			var index = 0;
			for(index = 0; index < c.length; index++) {
				if(c.eq(index).hasClass('shown')) { break; }
			}
			if(index > 0) { index--; }
			c.removeClass('shown').hide();
			c.eq(index).addClass('shown').show();
			var d = $(this).parent().parent().parent().find('.hrsep-pages td');
			d.removeClass('hrsep-goto-active');
			d.eq(index).addClass('hrsep-goto-active');
		};
		this.nextClick = function() {
			var c = $(this).parent().parent().parent().find('.hrsep-item');
			var index = 0;
			for(index = 0; index < c.length; index++) {
				if(c.eq(index).hasClass('shown')) { break; }
			}
			if(index < c.length - 1) { index++; }
			c.removeClass('shown').hide();
			c.eq(index).addClass('shown').show();
			var d = $(this).parent().parent().parent().find('.hrsep-pages td');
			d.removeClass('hrsep-goto-active');
			d.eq(index).addClass('hrsep-goto-active');
		};
		this.gotoClick = function() {
			var c = $(this).parent().parent().parent().parent().parent().parent().find('.hrsep-item');
			var page = $(this).html().replace(/[^0-9]/, '');
			page--;
			if(page < 0 || page >= c.length) { return; }
			c.removeClass('shown').hide();
			c.eq(page).addClass('shown').show();
			var d = $(this).parent().parent().parent().parent().parent().parent().find('.hrsep-pages td');
			d.removeClass('hrsep-goto-active');
			d.eq(page).addClass('hrsep-goto-active');
		};
		
		for(var i = 0; i < this.blocks_tmp.length; i++) {
			if(typeof this.blocks_tmp[i] == 'undefined') { continue; }
			if(this.blocks_tmp[i].match(/^ *$/)) { continue; }
			this.blocks.push("<div class=\"hrsep-item\">" + this.blocks_tmp[i] + "</div>");
		}
		this.container.html(this.blocks.join(""));
		this.container.find('.hrsep-item').hide();
		this.blocks = null;
		var ww = 0; var hh = 0; var count = 0;
		this.container.find('.hrsep-item').each(function(index) {
			var wx = $(this).width(); var hx = $(this).height(); if(ww < wx) { ww = wx; } if(hh < hx) { hh = hx; } count++;
		});
		if(this.options.width == null) { this.options.width = ww; }
		if(this.options.height == null) { this.options.height = hh; }
		this.container.css({
		'overflow': 'hidden',
		'width': this.options.width + 'px',
		'height': this.options.height + 'px'
		});
		this.container.find('.hrsep-item').eq(0).show().addClass('shown');
		this.container.wrap('<div class="hrsep"></div>');
		this.container.parent().prepend('<div class="hrsep-buttons"></div>');
		var buttonsdiv = this.container.parent().find('.hrsep-buttons');
		buttonsdiv.append('<div class="hrsep-prev">' + this.options.prevHTML + '</div>');
		buttonsdiv.append('<div class="paginacion-light"></div>');
		var pagediv = buttonsdiv.find('.paginacion-light'); // Pilares
		pagediv.append('<table class="hrsep-pages"><tbody><tr></tr></tbody></table>');
		var pageinner = buttonsdiv.find('.hrsep-pages tr');
		for(var i = 1; i <= count; i++) {
			if(i == 1) {
				pageinner.append('<td class="hrsep-goto hrsep-goto-active hrsep-goto-' + i + '">' + i + '</td>');
			} else {
				pageinner.append('<td class="hrsep-goto hrsep-goto-' + i + '">' + i + '</td>');
			}
		}
		buttonsdiv.append('<div class="hrsep-message" style="display:none;"></div>');
		buttonsdiv.append('<div class="hrsep-next">' + this.options.nextHTML + '</div>');
		buttonsdiv.find('.hrsep-prev').click(this.prevClick); buttonsdiv.find('.hrsep-next').click(this.nextClick); buttonsdiv.find('.hrsep-goto').click(this.gotoClick);
	};
	$.fn.hrsep = function(o) {
		if (typeof o == 'string') {
			var instance = $(this).data('hrsep'), args = Array.prototype.slice.call(arguments, 1);
			return instance[o].apply(instance, args);
		} else {
			return this.each(function() {
				$(this).data('hrsep', new $.hrsep(this, o));
			});
		}
	};
})(jQuery);

