/*!
 * Queensbridge jQuery-plugin
 * http://queensbridge.se/
 *
 * Date: Mon Feb 5 9:54:33 2010 -0500
 */
(function($) {
	var prefs = {
		me : false,
		aniSpeed : 500,
		curPage : 0,
		numOfPages : 0,
		pageWidth: 1000,
		animating: false
	};
	
	var newMethods = {

		// Init Method
		QBscroll : function() {
			if( $(this).is('div') ) {
				
				// Build nav
				var nav = '<ul class="paging">';
						nav+= '<li class="prev"><span>Föregående</span></li>';
						nav+= '<li class="next"><span>Nästa</span></li>';
						nav+= '</ul>';
				$(this).append(nav);
				
				// Bind events for nav
				$(this).find('.paging .prev,').bind('click', $(this).QBscrollPrev);
				$(this).find('.paging .next').bind('click', $(this).QBscrollNext);
				
				// Set some prefs and adjust width of page wrapper
				prefs.me = $(this);
				prefs.numOfPages = $(this).find('.page').length;
				prefs.pageWidth = $(this).width();
				$(this).find('.pages:first').width( prefs.pageWidth * prefs.numOfPages );
				// Update the nav
				$(this).QBsetNav();
				
			}		
		},
		
		QBsetNav : function() {
			
			var p = $(prefs.me).find('.paging .prev');
			var n = $(prefs.me).find('.paging .next');
			
			// Next
			if( prefs.curPage >= ( prefs.numOfPages - 1 ) && !$(n).hasClass('off') ) {
				$(n).addClass('off');
			} else if( $(n).hasClass('off') ) {
				$(n).removeClass('off');
			}
			
			// Prev
			if( prefs.curPage <= 0 && !$(p).hasClass('off') ) {
				$(p).addClass('off');
			} else if( $(p).hasClass('off') ) {
				$(p).removeClass('off');
			}			
	
		},
		
		QBscrollPrev : function() {
		
			// We're not on first page
			if( !$(this).hasClass('off') && !prefs.animating ) {
				prefs.animating = true;			
				var p = $(this).parents('.pages_wrapper:first').find('div.pages:first');
				var curPos = $(p).css('margin-left');
						curPos = parseInt( curPos.substring(0, curPos.length-2) );					
				var newPos = curPos + prefs.pageWidth;
				$(p).animate( { marginLeft: newPos + 'px' }, prefs.aniSpeed, 'easeOutBack', function() { prefs.animating = false; });
				prefs.curPage--;
				$(this).QBsetNav();				
			}
				
		},
		
		QBscrollNext : function() {
		
			// We're not on last page
			if( !$(this).hasClass('off') && !prefs.animating ) {
				prefs.animating = true;
				var p = $(this).parents('.pages_wrapper:first').find('div.pages:first');
				var curPos = $(p).css('margin-left');
						curPos = parseInt(  curPos.substring(0, curPos.length-2) );					
				var newPos = curPos - prefs.pageWidth;
				$(p).animate( { marginLeft: newPos + 'px' }, prefs.aniSpeed, 'easeOutBack', function() { prefs.animating = false; });
				prefs.curPage++;
				$(this).QBsetNav();
			}
			
		}

	}
		
	jQuery.each(newMethods,function(i){
		jQuery.fn[i] = this;
	});
	
})(jQuery);