/*
 * jQuery paged content plugin
 * copyright (C) 2010 Daniel James
 * All Rights Reserved
 * You may not reproduce this file.
 * Phone: +61 1800 888 981
 * Email: daniel@netbreeze.com.au
 */
if(typeof jQuery != "undefined") {
	jQuery(function($) {
		$.fn.extend({
			paged:function(options) {
				var settings = $.extend({}, $.fn.paged.defaults, options);
				return this.each(function() {
					var ele=$(this);
					//if(settings.navigation) settings.navigation.empty();
					var altback,altnext;
					var back,next,page=1,pp,total=ele.height();
					var headingele,heading=false,headingheight=0;
					if (total>settings.height) {
						ele.css('overflow','hidden');
						ele.height(settings.height);
						if(settings.keepheading) {
							headingele = $('h1',ele);
							heading = headingele.get(0).innerHTML;
						}
						if (heading) {
							var p=ele.position();
							heading=$('<h1>'+heading+'</h1>').css({
								position:'absolute',
								top:p.top,
								left:p.left,
								display:'none',
								color:headingele.css('color')
							});
							ele.after(heading);
							headingheight=settings.lineheight*2;
							pp=Math.ceil((total-headingheight)/(settings.height-headingheight))
							$('<div/>').css('height',((settings.height-headingheight)*pp)-total+headingheight).appendTo(ele);
						} else {
							pp=Math.ceil(total/settings.height);
							$('<div/>').css('height',(settings.height*pp)-total).appendTo(ele);
						}

						altback=$('a.back',settings.navigation);
						altnext=$('a.next',settings.navigation);

						function pageselect(dir) {
							var prevpage=page;
							page += dir;
							if (page<1) page = 1;
							if (page>pp) page = pp;
							if (page == 1) {
								back.toggleClass('disabled',true);
								altback.toggleClass('disabled',false);
							} else {
								back.toggleClass('disabled',false);
								altback.toggleClass('disabled',true);
							}
							if (page == pp) {
								next.toggleClass('disabled',true);
								altnext.toggleClass('disabled',false);
							} else {
								next.toggleClass('disabled',false);
								altnext.toggleClass('disabled',true);
							}
							if(prevpage != page) {
								var height=settings.height;
								if(heading) {
									height-=headingheight;
								}
								if(settings.fade) ele.css('opacity',0).attr('scrollTop',(page-1)*height+(page == 1?0:headingheight));

								if(heading) {
									if(page == 1) {
										ele.height(settings.height);
										ele.css('margin-top',0);
										heading.hide();
									} else {
										ele.height(height);
										ele.css('margin-top',headingheight);
										heading.show();
									}
								}

								setTimeout(function() {
									ele.attr('scrollTop',(page-1)*height+(page == 1?0:headingheight));
									if(settings.fade) ele.animate({'opacity':1},settings.fadetime, function() {
										if($.browser.msie) this.style.removeAttribute('filter');
									});
								},0);
							}
						}

						back=$('<a href="#" class="back">'+settings.backlabel+'</a>').bind('click',function() {
							this.blur();
							pageselect(-1);
							return false;
						}).bind('selectstart',function() {
							return false;
						}).bind('dragstart',function() {
							return false;
						}).toggleClass('disabled',true).appendTo(settings.navigation);
						altback.toggleClass('disabled',false);
						next=$('<a href="#" class="next">'+settings.nextlabel+'</a>').bind('click',function() {
							this.blur();
							pageselect(+1);
							return false;
						}).bind('selectstart',function() {
							return false;
						}).bind('dragstart',function() {
							return false;
						}).appendTo(settings.navigation);
						altnext.toggleClass('disabled',true);
					}
				});
			}
		});
		$.fn.paged.defaults = {
			navigation:false, // $('#navbar')
			backlabel:"Back",
			nextlabel:"Next",
			keepheading:false, // whether to display the first <h1> tag on all pages
			lineheight:16, // needed for keepheading
			fade:true,
			fadetime:500,
			height:100
		};
	});
}

