/* This file includes both Quick Pagination & Event Pagination */

/* 
Used on pages:

1.  http://www.ncdot.gov/recovery
2.  http://www.ncdot.gov/transit/aviation/
3.  http://www.ncdot.gov/programs/ghsp/
4.  http://www.ncdot.gov/travel/i40_rockslide/

*/

/* ===========================================================================
 *
 * JQuery Quick Pagination
 * Version 1.0.1
 * For full documentation and more go to http://projects.allmarkedup.com/jquery_quick_paginate/
 *
 * ---------------------------------------------------------------------------
 */
jQuery.fn.quickpaginate = function( settings ) {
	settings = jQuery.extend({
		perpage: 6,
		pager : null,
		showcounter : true,
		prev : "qp_next",
		next : "qp_prev",
		pagenumber : "qp_pagenumber",
		totalnumber : "qp_totalnumber",
		counter : "qp_counter"
	}, settings);

	var cm;
	var total;
	var last = false;
	var first = true;
	var items = jQuery(this);
	var nextbut;
	var prevbut;
	var init = function()
	{
		items.show();
		total = items.size();
		if ( items.size() > settings.perpage )
		{
			items.filter(":gt("+(settings.perpage-1)+")").hide();
			cm = settings.perpage;
			
			setNav();
		}
	};
	
	var goNext = function()
	{
		if ( !last )
		{
			var nm = cm + settings.perpage;
			items.hide();
			
			items.slice( cm, nm ).show();
			cm = nm;
			
			if ( cm >= total  )
			{
				last = true;
				nextbut.addClass("qp_disabled");
			}
			
			if ( settings.showcounter ) settings.pager.find("."+settings.pagenumber).text(cm/settings.perpage);
			
			prevbut.removeClass("qp_disabled");
			first = false;
		}
	};
	
	var goPrev = function()
	{
		if ( !first )
		{
			var nm = cm-settings.perpage;
			items.hide();
			
			items.slice( (nm - settings.perpage), nm ).show();
			cm = nm;
			
			if ( cm == settings.perpage  )
			{
				first = true;
				prevbut.addClass("qp_disabled");
			}
			
			if ( settings.showcounter ) settings.pager.find("."+settings.pagenumber).text(cm/settings.perpage);
			
			nextbut.removeClass("qp_disabled");
			last = false;
		}
	};
	
	var setNav = function()
	{
		if ( settings.pager === null )
		{	
			settings.pager = jQuery('<div class="qc_pager"></div>');
			items.eq( items.size() -1 ).after(settings.pager);
		}
		
		var pagerNav = $('<div class="pager"><a class="'+settings.prev+'" href="#">&laquo; Prev</a><a class="'+settings.next+'" href="#">Next &raquo;</a></div>');
		
		jQuery(settings.pager).append( pagerNav );
		
		if ( settings.showcounter )
		{
			var counter = '<span class="'+settings.counter+'"><span class="'+settings.pagenumber+'"></span> / <span class="'+settings.totalnumber+'"></span></span>';
			
			settings.pager.find("."+settings.prev).after( counter );
			
			settings.pager.find("."+settings.pagenumber).text( 1 );
			settings.pager.find("."+settings.totalnumber).text( Math.ceil(total / settings.perpage) );
		}

		nextbut = settings.pager.find("."+settings.next);
			
		prevbut = settings.pager.find("."+settings.prev);
		
		prevbut.addClass("qp_disabled");
		
		nextbut.click(function(){
			goNext();
			return false;
		});
		
		prevbut.click(function(){
			goPrev();
			return false;
		});
		
	};
	
	init(); // run the function
};



/* 
Used on pages:

1.  http://www.ncdot.gov/business/bridge/letting
2.  
3.  
4.  

*/


/* 
 * Simple Pager Plugin
 * @tested with jQuery v1.3+
 *
 * @development date: 2010/04/06
 *
 * This script is influenced by Quick Paginate & Event-driven Pagination
 * http://projects.allmarkedup.com/jquery_quick_paginate/
 * http://projects.allmarkedup.com/jquery_evtpaginate/
 * 
 * "Feel free to use. If it breaks you're on your own."
 * Me Not You Design, http://www.menotyou.com
 *
 */

/*
	Settings Explaination: This is a Paging plugin
	
	1. SCRIPT Format
        $(yourselectorhere).simplePager({
            perpage     : 5,                        //-- results to display per page
            pager       : '<div></div>',			//-- id, obj, or well formed html string of where to drop/write the pager
            loop        : false,                    //-- paging restarts at the first page when the last page is reached and vice versa

													//-- classes placed on "prev" & "next" links/tags, based on events: "nopages" = if loop is
														 false, no more pages after or before - "onepage" = only a single page exists
            classes		: {							
						  nopages   : 'nomorepages',
						  onepage   : 'onlyonepage',
						  zeropages : 'zeropages'
						  },
													//-- setup your token strings, leave a token out to ignore that display feature, make sure to
													     use well formed html elements. For "per" you do need to use a well formed select list,
													     any numerical values can be used and a "asterisk" can be used to indicate "all".
														 For "prv" & "nxt" you can use any well formed tag.
            format      : {                         
                          per       : '<select><option value="5">5</option><option value="10">10</option><option value="15">15</option></select>',
                          prv       : '<a href="#">&#171; Prev</a>',
                          nxt       : '<a href="#">Next &#187;</a>',
                          pager     : 'Per Page: [PER] Results Total:[CNT] [PRV] [NUM] / [TOT] [NXT]'
                          }
        });
	
*/

(function($){$.fn.simplePager=function(u){var u=$.extend(true,{perpage:5,pager:'<div></div>',loop:false,classes:{nopages:'nomorepages',onepage:'onlyonepage',zeropages:'zeropages'},format:{per:'<select><option value="5">5</option><option value="10">10</option><option value="*">All</option></select>',prv:'<a href="#">&#171; Prev</a>',nxt:'<a href="#">Next &#187;</a>',pager:'Per Page: [PER] Results Total: [CNT] [PRV] [NUM] / [TOT] [NXT]'}},u);if(!u.pager){return}return this.each(function(i,h){var l=$(h).children();var m=u.perpage;var n=1;var o=1;var p=null;var q=null;var r=null;var s=function(a){a.blur();var b=a.options[a.selectedIndex].value;if(b=="*"||parseInt(b)>=0){m=(b=="*")?l.size():parseInt(b);o=1;go()}};var t=function(a,b){switch(b){case"prv":if(n>1){o=n-1}else if(n===1&&u.loop){o=p}break;default:if(n<p){o=n+1}else if(n===p&&u.loop){o=1}}go()};function go(){var d=m*o;var e=d-m;e=(e===d)?d-e:e;l.hide();l.slice(e,d).show();var f=l.size();n=o;if(q==null){var g=$(u.pager);if((/<.*?>.*?<\/.*?>/).test(u.pager)){$(h).after(g)}q=g;r=u.format.pager.replace("[PER]",u.format.per).replace("[CNT]",f).replace("[PRV]",u.format.prv).replace("[NXT]",u.format.nxt)}p=Math.ceil(f/m);if(f==0){o=0}q.html(r.replace("[NUM]",o).replace("[TOT]",p));q.find('*').each(function(j,c){function clickfunc(a){if((o===p&&p===1)||(f==0)){var b=(f==0)?u.classes.zeropages:u.classes.onepage;$(c).addClass(b);$(c).click(function(){this.blur();return false})}else{if(a=='prv'&&n<=1){$(c).addClass(u.classes.nopages)}if(a=='nxt'&&n>=p){$(c).addClass(u.classes.nopages)}$(c).click(function(){t(this,a);return false})}}switch($(c).text()){case $(u.format.per).text():if((o===p&&p===1&&m!=f)||(f==0)){c.disabled=true}else{$(c).change(function(){s(this);return false});$(c).children().each(function(k,a){if((parseInt(a.value)==m)||(a.value=="*"&&m==f)){a.selected=true}})}break;case $(u.format.prv).text():clickfunc('prv');break;case $(u.format.nxt).text():clickfunc('nxt');break}})}go()})}})(jQuery);



