jquery.paginate.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. (function($) {
  2. $.fn.paginate = function(options) {
  3. var opts = $.extend({}, $.fn.paginate.defaults, options);
  4. return this.each(function() {
  5. $this = $(this);
  6. var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
  7. var selectedpage = o.start;
  8. $.fn.draw(o,$this,selectedpage);
  9. });
  10. };
  11. var outsidewidth_tmp = 0;
  12. var insidewidth = 0;
  13. var bName = navigator.appName;
  14. var bVer = navigator.appVersion;
  15. if(bVer.indexOf('MSIE 7.0') > 0)
  16. var ver = "ie7";
  17. $.fn.paginate.defaults = {
  18. count : 5,
  19. start : 12,
  20. display : 5,
  21. border : true,
  22. border_color : '#fff',
  23. text_color : '#8cc59d',
  24. background_color : 'black',
  25. border_hover_color : '#fff',
  26. text_hover_color : '#fff',
  27. background_hover_color : '#fff',
  28. rotate : true,
  29. images : true,
  30. mouse : 'slide',
  31. onChange : function(){return false;}
  32. };
  33. $.fn.draw = function(o,obj,selectedpage){
  34. if(o.display > o.count)
  35. o.display = o.count;
  36. $this.empty();
  37. if(o.images){
  38. var spreviousclass = 'jPag-sprevious-img';
  39. var previousclass = 'jPag-previous-img';
  40. var snextclass = 'jPag-snext-img';
  41. var nextclass = 'jPag-next-img';
  42. }
  43. else{
  44. var spreviousclass = 'jPag-sprevious';
  45. var previousclass = 'jPag-previous';
  46. var snextclass = 'jPag-snext';
  47. var nextclass = 'jPag-next';
  48. }
  49. var _first = $(document.createElement('a')).addClass('jPag-first').html('First');
  50. if(o.rotate){
  51. if(o.images) var _rotleft = $(document.createElement('span')).addClass(spreviousclass);
  52. else var _rotleft = $(document.createElement('span')).addClass(spreviousclass).html('«');
  53. }
  54. var _divwrapleft = $(document.createElement('div')).addClass('jPag-control-back');
  55. _divwrapleft.append(_first).append(_rotleft);
  56. var _ulwrapdiv = $(document.createElement('div')).css('overflow','hidden');
  57. var _ul = $(document.createElement('ul')).addClass('jPag-pages')
  58. var c = (o.display - 1) / 2;
  59. var first = selectedpage - c;
  60. var selobj;
  61. for(var i = 0; i < o.count; i++){
  62. var val = i+1;
  63. if(val == selectedpage){
  64. var _obj = $(document.createElement('li')).html('<span class="jPag-current">'+val+'</span>');
  65. selobj = _obj;
  66. _ul.append(_obj);
  67. }
  68. else{
  69. var _obj = $(document.createElement('li')).html('<a>'+ val +'</a>');
  70. _ul.append(_obj);
  71. }
  72. }
  73. _ulwrapdiv.append(_ul);
  74. if(o.rotate){
  75. if(o.images) var _rotright = $(document.createElement('span')).addClass(snextclass);
  76. else var _rotright = $(document.createElement('span')).addClass(snextclass).html('&raquo;');
  77. }
  78. var _last = $(document.createElement('a')).addClass('jPag-last').html('Last');
  79. var _divwrapright = $(document.createElement('div')).addClass('jPag-control-front');
  80. _divwrapright.append(_rotright).append(_last);
  81. //append all:
  82. $this.addClass('jPaginate').append(_divwrapleft).append(_ulwrapdiv).append(_divwrapright);
  83. if(!o.border){
  84. if(o.background_color == 'none') var a_css = {'color':o.text_color};
  85. else var a_css = {'color':o.text_color,'background-color':o.background_color};
  86. if(o.background_hover_color == 'none') var hover_css = {'color':o.text_hover_color};
  87. else var hover_css = {'color':o.text_hover_color,'background-color':o.background_hover_color};
  88. }
  89. else{
  90. if(o.background_color == 'none') var a_css = {'color':o.text_color,'border':'1px solid '+o.border_color};
  91. else var a_css = {'color':o.text_color,'background-color':o.background_color,'border':'1px solid '+o.border_color};
  92. if(o.background_hover_color == 'none') var hover_css = {'color':o.text_hover_color,'border':'1px solid '+o.border_hover_color};
  93. else var hover_css = {'color':o.text_hover_color,'background-color':o.background_hover_color,'border':'1px solid '+o.border_hover_color};
  94. }
  95. $.fn.applystyle(o,$this,a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright);
  96. //calculate width of the ones displayed:
  97. var outsidewidth = outsidewidth_tmp - _first.parent().width() -3;
  98. if(ver == 'ie7'){
  99. _ulwrapdiv.css('width',outsidewidth+72+'px');
  100. _divwrapright.css('left',outsidewidth_tmp+6+72+'px');
  101. }
  102. else{
  103. _ulwrapdiv.css('width',outsidewidth+'px');
  104. _divwrapright.css('left',outsidewidth_tmp+6+'px');
  105. }
  106. if(o.rotate){
  107. _rotright.hover(
  108. function() {
  109. thumbs_scroll_interval = setInterval(
  110. function() {
  111. var left = _ulwrapdiv.scrollLeft() + 1;
  112. _ulwrapdiv.scrollLeft(left);
  113. },
  114. 20
  115. );
  116. },
  117. function() {
  118. clearInterval(thumbs_scroll_interval);
  119. }
  120. );
  121. _rotleft.hover(
  122. function() {
  123. thumbs_scroll_interval = setInterval(
  124. function() {
  125. var left = _ulwrapdiv.scrollLeft() - 1;
  126. _ulwrapdiv.scrollLeft(left);
  127. },
  128. 20
  129. );
  130. },
  131. function() {
  132. clearInterval(thumbs_scroll_interval);
  133. }
  134. );
  135. if(o.mouse == 'press'){
  136. _rotright.mousedown(
  137. function() {
  138. thumbs_mouse_interval = setInterval(
  139. function() {
  140. var left = _ulwrapdiv.scrollLeft() + 5;
  141. _ulwrapdiv.scrollLeft(left);
  142. },
  143. 20
  144. );
  145. }
  146. ).mouseup(
  147. function() {
  148. clearInterval(thumbs_mouse_interval);
  149. }
  150. );
  151. _rotleft.mousedown(
  152. function() {
  153. thumbs_mouse_interval = setInterval(
  154. function() {
  155. var left = _ulwrapdiv.scrollLeft() - 5;
  156. _ulwrapdiv.scrollLeft(left);
  157. },
  158. 20
  159. );
  160. }
  161. ).mouseup(
  162. function() {
  163. clearInterval(thumbs_mouse_interval);
  164. }
  165. );
  166. }
  167. else{
  168. _rotleft.click(function(e){
  169. var width = outsidewidth - 10;
  170. var left = _ulwrapdiv.scrollLeft() - width;
  171. _ulwrapdiv.animate({scrollLeft: left +'px'});
  172. });
  173. _rotright.click(function(e){
  174. var width = outsidewidth - 10;
  175. var left = _ulwrapdiv.scrollLeft() + width;
  176. _ulwrapdiv.animate({scrollLeft: left +'px'});
  177. });
  178. }
  179. }
  180. //first and last:
  181. _first.click(function(e){
  182. _ulwrapdiv.animate({scrollLeft: '0px'});
  183. _ulwrapdiv.find('li').eq(0).click();
  184. });
  185. _last.click(function(e){
  186. _ulwrapdiv.animate({scrollLeft: insidewidth +'px'});
  187. _ulwrapdiv.find('li').eq(o.count - 1).click();
  188. });
  189. //click a page
  190. _ulwrapdiv.find('li').click(function(e){
  191. selobj.html('<a>'+selobj.find('.jPag-current').html()+'</a>');
  192. var currval = $(this).find('a').html();
  193. $(this).html('<span class="jPag-current">'+currval+'</span>');
  194. selobj = $(this);
  195. $.fn.applystyle(o,$(this).parent().parent().parent(),a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright);
  196. var left = (this.offsetLeft) / 2;
  197. var left2 = _ulwrapdiv.scrollLeft() + left;
  198. var tmp = left - (outsidewidth / 2);
  199. if(ver == 'ie7')
  200. _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 52 + 'px'});
  201. else
  202. _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 'px'});
  203. o.onChange(currval);
  204. });
  205. var last = _ulwrapdiv.find('li').eq(o.start-1);
  206. last.attr('id','tmp');
  207. var left = document.getElementById('tmp').offsetLeft / 2;
  208. last.removeAttr('id');
  209. var tmp = left - (outsidewidth / 2);
  210. if(ver == 'ie7') _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 52 + 'px'});
  211. else _ulwrapdiv.animate({scrollLeft: left + tmp - _first.parent().width() + 'px'});
  212. }
  213. $.fn.applystyle = function(o,obj,a_css,hover_css,_first,_ul,_ulwrapdiv,_divwrapright){
  214. obj.find('a').css(a_css);
  215. obj.find('span.jPag-current').css(hover_css);
  216. obj.find('a').hover(
  217. function(){
  218. $(this).css(hover_css);
  219. },
  220. function(){
  221. $(this).css(a_css);
  222. }
  223. );
  224. obj.css('padding-left',_first.parent().width() + 5 +'px');
  225. insidewidth = 0;
  226. obj.find('li').each(function(i,n){
  227. if(i == (o.display-1)){
  228. outsidewidth_tmp = this.offsetLeft + this.offsetWidth ;
  229. }
  230. insidewidth += this.offsetWidth;
  231. })
  232. _ul.css('width',insidewidth+'px');
  233. }
  234. })(jQuery);