1 $.fn.clone = function(){
2 return this.pushStack( $.map(this,"a.cloneNode(true)"), arguments );
6 $.fn.pager = function(step,fn) {
14 return this.each(function(){
16 var rows = $(types[this.nodeName], this);
18 var names = [], num = [];
20 if ( !step || step.constructor != Function ) {
23 if (rows.length > step)
24 for ( var i = 0; i <= rows.length; i += step ) {
25 names.push( names.length + 1 );
26 num.push( [ i * step, step ] );
31 var l = step.apply( this ).substr(0,1);
33 names.push( l.toUpperCase() );
34 var pre = num.length ? num[ num.length - 1 ][0] + num[ num.length - 1 ][1] : 0;
36 num.push( [ pre, 0 ] );
40 num[ num.length - 1 ][1]++;
45 var pager = $("<ul class='nav-page'></ul>");
47 for ( var i = 0; i < names.length; i++ )
48 $("<a href=''></a>").rel( i ).html( names[i] ).click(function() {
49 return handleCrop( this.rel );
50 }).wrap("<li></li>").parent().appendTo(pager);
52 pager.insertBefore( this );
54 var prev = $("<a href=''>« Prev</a>").click(function(){
55 return handleCrop( --curPage );
56 }).wrap("<li class='prev'></li>").parent().prependTo(pager);
58 var next = $("<a href=''>Next »</a>").click(function(){
59 return handleCrop( ++curPage );
60 }).wrap("<li class='next'></li>").parent().appendTo(pager);
65 function handleCrop( page ) {
67 var s = num[ curPage ][0];
68 var e = s + num[ curPage ][1];
70 if ( !curPage ) prev.hide();
73 if ( curPage == names.length - 1 ) next.hide();
88 fn.apply( pagedUI, [ s, e ] );