function trim(a) {
    a = a.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};

function confirmAction(msg, url) {
	var yn = confirm(msg);
	if (yn) location.assign(url);
}

$(document).ready( function(){
	$('table.table tbody > tr:nth-child(even)').addClass('alternate');
});


$.fn.pagination = function (options, optionKey, optionValue) {
	
	var defaults = {
		current		: 0,
		location	: 'bottom',
		id			: 'pagination',
		onPageSelect: function() { alert('Not implemented!'); }
	}
	
	var opts = $.extend(defaults, options);
	
	return this.each( function(index, element) {
		
		if (!opts.limit || !opts.total) return;
		
		$(document).ready( function(){ opts.onPageSelect(element, opts); } );
		
		var $e = $(element);
		var $pagination = $('<div></div>').attr('id', opts.id).addClass('pagination');
		
		var elementId	= element.id;
		var pages 		= Math.ceil(opts.total / opts.limit);
		
		if (pages == 1) return;
		
		for (var i = 1; i < pages + 1; i++) {
			var $page = $('<a href="javascript:;">' + i + '</a>')
							.click( function() { 
								var $self 		= $(this);
								var myOptions	= {
									current	: parseInt($self.text()) - 1
								};
								
								var options = $.extend(opts, myOptions);
								
								$('#' + opts.id).find('a').each(function(index, element){
									if (index == options.current) {
										$(element).addClass('current-page');
									}else{
										$(element).removeClass('current-page');
									}
								});
								
								opts.onPageSelect(document.getElementById(elementId), options);
							});
			if ((i - 1) == opts.current) {
				$page.addClass('current-page');
			}
			
			$pagination.append($page);
		}
		
		switch(opts.location) {
			case 'top'		: $e.prepend($pagination)	; break;
			case 'bottom'	: $e.append($pagination)	; break;
		}
	});
}
