%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/orion.misc/infinitescroll/ |
Current File : /home/bitrix/www/bitrix/js/orion.misc/infinitescroll/infinitescroll.min.js |
/* * LLC Orion Soft, 2013 * www.orion-soft.ru * Alexandr Lobanov * version 2.2 - n-inst + window + self-ajax + events * version 2.2.1 - fix panel switching to last page * version 3.0 - table support * version 3.0.1 - fix bug * version 3.0.4 - add events on_ajax_data and on_ajax_data4insert */ function orionInfPageScroll(e){this.window_bind="";this.smooth_scroll=1;this.float_bar_show=1;this.nav_bar_show=1;this.nav_num="";this.limit_page=0;this.current_page=0;this.pagen_name="PAGEN_1";this.showall_name="SHOWALL_1";this.margin_from_end=-100;this.margin_from_begin=40;this.margin_from_post=-10;this.self_ajax_url="";this.on_ajax_before=null;this.on_ajax_success=null;this.on_ajax_data=null;this.on_ajax_data4insert=null;this.on_ajax_error=null;this.on_ajax_complete=null;this.on_scroll=null;this.on_page_click_before=null;this.on_page_click_after=null;this.on_page_switch=null;this.setParams(e);this.init()}orionInfPageScroll.prototype.setParams=function(e){for(var t in e){this[t]=e[t]}};orionInfPageScroll.prototype.switchNavBar=function(e){if(e==0)$("."+this.bar_sp_name+this.nav_num).hide();else $("."+this.bar_sp_name+this.nav_num).show()};orionInfPageScroll.prototype.ajaxLoader=function(e,t){if(e=="on"&&$(".orion-isp-ajax-wait").size()==0)$('<div class="orion-isp-ajax-wait"></div>').insertAfter($(t));else if(e=="off")$(".orion-isp-ajax-wait").fadeOut("fast",function(){$(this).remove()})};orionInfPageScroll.prototype.OnPageClickAnimComplete=function(e){if(this.on_page_click_after!=null&&typeof window[this.on_page_click_after]=="function")window[this.on_page_click_after](e)};orionInfPageScroll.prototype.onPageClick=function(e){var t=this;var n=new RegExp(this.pagen_name+"=[\\s]*([\\d]*)","i");var r=new RegExp(this.showall_name+"=[\\s]*([\\d]*)","i");var i=e.target.href.match(n);var s=e.target.href.match(r);if(s==null){var o=i!=null?parseInt(i[1]):1;if(this.on_page_click_before!=null&&typeof window[this.on_page_click_before]=="function")window[this.on_page_click_before](o);if(o>=this.min_page&&o<=this.max_page){var u=this.getScrollTop(o);if(this.window_bind==""){if(this.smooth_scroll)$("html, body").animate({scrollTop:u},function(){t.OnPageClickAnimComplete(o)});else{$("html, body").scrollTop(u);t.OnPageClickAnimComplete(o)}}else{bwt=$(this.window_bind).offset().top;sp1t=this.getScrollTop(this.min_page);if(this.smooth_scroll)$(this.window_bind).animate({scrollTop:u-sp1t},function(){t.OnPageClickAnimComplete(o)});else{$(this.window_bind).scrollTop(u-sp1t);t.OnPageClickAnimComplete(o)}}return false}}return true};orionInfPageScroll.prototype.updatePaging=function(e,t){if(!t&&this.current_page==e)return;var n="."+this.bar_sp_name+this.nav_num;var r=$(n);var i="."+this.fbar_sp_name+this.nav_num;var s=$(i+" .txt").eq(0);if(this.data[e].pagesData){s.html(this.data[e].pagesData);r.html(this.data[e].pagesData);this.current_page=e;if(this.on_page_switch!=null&&typeof window[this.on_page_switch]=="function")window[this.on_page_switch](e)}var s=$(i);var o=$(i+" .bg");o.width(s.width())};orionInfPageScroll.prototype.add_data=function(e){this.data[e]={number:e,pagesData:""}};orionInfPageScroll.prototype.getScrollBtm=function(e){var t=this.getMark(this,"e",e,0);if(t.size()){if(this.list_mode=="l"){return t.offset().top}else{return t.offset().top+t.height()}}return 0};orionInfPageScroll.prototype.getScrollTop=function(e){var t=this.getMark(this,"b",e,0);if(t.size())return t.offset().top;return 0};orionInfPageScroll.prototype.jquery2html=function(e){var t=[];for(var n=0;n<e.length;n++){t.push(e[n].outerHTML)}return t.join("")};orionInfPageScroll.prototype.ajax=function(){if(this.max_page==this.limit_page)return false;if(this.on_ajax_before!=null&&typeof window[this.on_ajax_before]=="function"){var e=window[this.on_ajax_before](this.max_page+1);if(e==false)return false}this.add_data(this.max_page+1);if(this.list_mode=="l"){this.ajaxLoader("on",this.getMark(this,"e",this.max_page,0))}else{this.ajaxLoader("on",$("table."+this.table_class_sp_name+this.nav_num))}this.max_page++;var t=location.href.split("?")[0];var n=new RegExp("("+this.pagen_name+"=)[\\s]*[\\d]*","i");var r=this.self_ajax_url?this.self_ajax_url:location.href;var i=r.match(n);if(i!=null){r=r.replace(n,"$1"+this.max_page)}else{var o=r.indexOf("?")>0?"&":"?";var u=r.split("#");r=u[0]+o+this.pagen_name+"="+this.max_page}if(this.max_page==this.limit_page)$(this.sp_btn_id+this.nav_num).hide();var a=this;$.ajax({url:r,type:"POST",data:{page_url:t,nav_num:a.nav_num},success:function(e,t){if(a.on_ajax_success!=null&&typeof window[a.on_ajax_success]=="function")window[a.on_ajax_success](e,t);a.ajaxLoader("off");if(!e)return;var n=new RegExp("(?:<![-]{2}[\\s]*"+a.begin_sp_name+a.nav_num+"[^-]*[-]{2}>)([\\s\\S]*?)(?=<![-]{2}[\\s]*"+a.end_sp_name+a.nav_num+")","i");var r=e.match(n);if(r==null)return;a.data[a.max_page].pagesData=r[1];var i;if(a.list_mode=="l"){n=new RegExp("(?:[\"']+"+a.begin_list_sp_name+a.nav_num+"[\\s\\S]*?(?=span[\\s]*>)span[\\s]*>)([\\s\\S]*)(?=<[^\"']*[\"']+"+a.end_list_sp_name+a.nav_num+")","i");r=e.match(n);if(r==null)return;if(a.on_ajax_data!=null&&typeof window[a.on_ajax_data]=="function")r[1]=window[a.on_ajax_data](r[1]);s='<a name="'+a.begin_sp_name+a.nav_num+"_"+a.max_page+'"></a>'+r[1]+'<a name="'+a.end_sp_name+a.nav_num+"_"+a.max_page+'"></a>';i=$(s)}else{n=new RegExp('<[\\s]*table.* (?=class[\\s]*=[\\s]*"[\\s\\S]*'+a.table_class_sp_name+")[\\s\\S]*?(?!<[\\s]*tr[\\s\\S]*<[\\s]*th)(<[\\s]*tr[\\s\\S]*?)(?=<[\\s]*/[\\s]*table)","i");r=e.match(n);if(r==null)return;if(a.on_ajax_data!=null&&typeof window[a.on_ajax_data]=="function")r[1]=window[a.on_ajax_data](r[1]);var o=a.begin_sp_name+a.nav_num+"_"+a.max_page;var u=a.end_sp_name+a.nav_num+"_"+a.max_page;i=$(r[1]).filter("tr:last").addClass(u).end().filter("tr:first").addClass(o).end()}if(a.on_ajax_data4insert!=null&&typeof window[a.on_ajax_data4insert]=="function")i=$(window[a.on_ajax_data4insert](a.jquery2html(i)));i.insertAfter(a.getMark(a,"e",a.max_page-1,0))},error:function(e,t,n){if(a.on_ajax_error!=null&&typeof window[a.on_ajax_error]=="function")window[a.on_ajax_error](e,t,n)},complete:function(e,t){if(a.on_ajax_complete!=null&&typeof window[a.on_ajax_complete]=="function")window[a.on_ajax_complete](e,t)}});return true};orionInfPageScroll.prototype.checkVisible=function(){if(this.getScrollTop(this.min_page)!=this.getScrollBtm(this.max_page)){if(!this.is_visible)this.updatePaging(this.current_page,true);this.is_visible=1}else{this.is_visible=0}return this.is_visible};orionInfPageScroll.prototype.onScroll=function(e){if(!this.checkVisible())return false;if(this.window_bind==""){var t=Math.abs($(window).scrollTop());var n=$(window).height()}else{var r=$(this.window_bind);var t=Math.abs(r.offset().top);var n=r.height()}var i=$("."+this.bar_sp_name+this.nav_num).eq(0).offset().top;var s=this.getScrollTop(this.min_page);var o=i<s?i:s;var u=$("."+this.fbar_sp_name+this.nav_num).eq(0);if(-t+o<-this.margin_from_begin&&this.float_bar_active==0){if(this.float_bar_show){u.fadeIn("fast")}this.float_bar_active=1}else if(-t+o>-this.margin_from_begin&&this.float_bar_active==1){if(this.float_bar_show){u.fadeOut("fast")}this.float_bar_active=0}if(this.window_bind==""){this.direction=t>this.last_wScroll?1:-1;this.last_wScroll=t}else{var a=this.getScrollTop(this.min_page);this.direction=a<this.last_wScroll?1:-1;this.last_wScroll=a}if(this.limit_page>this.max_page){var f=this.getMark(this,"e",this.max_page,0);if(f.size()>0){if(n+t>f.offset().top+this.margin_from_end){if($(this.sp_btn_id+this.nav_num).size()===0){this.ajax()}}}}pScrollTop=this.getScrollTop(this.current_page);pScrollBtm=this.getScrollBtm(this.current_page);if(pScrollTop!=null&&pScrollBtm!=null){if(-t+pScrollBtm<-this.margin_from_post&&this.direction>0&&this.current_page<this.limit_page){var l=this.current_page,c=l;while(++l<=this.max_page){c=l;if(-t+this.getScrollBtm(l-1)>-this.margin_from_post){c--;break}}this.updatePaging(c)}else if(-t+pScrollBtm>-this.margin_from_post&&this.direction<0&&this.current_page>=this.min_page){var l=this.current_page,c=l;while(--l>=this.min_page){c=l;if(-t+this.getScrollBtm(l)<-this.margin_from_post){c++;break}}this.updatePaging(c)}if(this.direction>0&&this.max_page==this.limit_page&&this.current_page==this.limit_page-1){pScrollBtmLmt=this.getScrollBtm(this.limit_page);if(pScrollBtmLmt!=null&&-t-n+pScrollBtmLmt<-this.margin_from_end){this.updatePaging(this.limit_page)}}}if(this.on_scroll!=null&&typeof window[this.on_scroll]=="function"){var h=this.window_bind==""?this.last_wScroll:t-this.last_wScroll;window[this.on_scroll](h)}};orionInfPageScroll.prototype.getMark=function(e,t,n,r){var i;if(e.list_mode=="l"){if(t=="b"){i=$('a[name^="'+e.begin_sp_name+e.nav_num+"_"+n+'"]')}else{i=$('a[name^="'+e.end_sp_name+e.nav_num+"_"+n+'"]')}}else{if(t=="b"){i=$("tr."+e.begin_sp_name+e.nav_num+"_"+n)}else{i=$("tr."+e.end_sp_name+e.nav_num+"_"+n)}}if(r>=0)return i.eq(r);else return i};orionInfPageScroll.prototype.init=function(){var e="orion_pgscroll"+this.nav_num+"_on_init";if(typeof window[e]=="function")this.setParams(window[e]());this.window_sp_name="orion_isp_window";this.sp_btn_id="#orion-isp-btn";this.begin_sp_name="orion_isp_begin";this.end_sp_name="orion_isp_end";this.table_class_sp_name="orion_isp_table";this.begin_list_sp_name="orion_isp_list_begin";this.end_list_sp_name="orion_isp_list_end";this.bar_sp_name="orion_isp";this.fbar_sp_name="orion-isp-fixed";this.float_bar_active=0;this.min_page=0;this.max_page=0;this.direction=0;this.last_wScroll=0;this.is_visible=0;this.list_mode="l";this.data={};if(this.window_bind==""){var t="."+this.window_sp_name+this.nav_num;if($(t).size())this.window_bind=t}if($("table."+this.table_class_sp_name+this.nav_num).size())this.list_mode="t";if(this.window_bind!=""){this.float_bar_show=0}this.switchNavBar(this.nav_bar_show);var n=this;var r=this.fbar_sp_name+this.nav_num;var i=this.bar_sp_name+this.nav_num;if($("."+r).size()==0)$('<div class="'+this.fbar_sp_name+" "+r+'"><div class="bg"></div><div class="txt"></div></div>').insertAfter($("."+i));if(jQuery.fn.jquery.split(".").slice(0,2).join("")<17){$("."+i+" a").live("click",function(e){return n.onPageClick(e)});$("."+r+" .txt a").live("click",function(e){return n.onPageClick(e)})}else{$(document).on("click","."+i+" a",function(e){return n.onPageClick(e)});$(document).on("click","."+r+" .txt a",function(e){return n.onPageClick(e)})}if(this.list_mode=="l"){$("."+this.begin_list_sp_name+this.nav_num).replaceWith('<a name="'+this.begin_sp_name+this.nav_num+"_"+this.current_page+'"></a>');$("."+this.end_list_sp_name+this.nav_num).replaceWith('<a name="'+this.end_sp_name+this.nav_num+"_"+this.current_page+'"></a>')}else{$("table."+this.table_class_sp_name+this.nav_num+" tr:first").addClass(this.begin_sp_name+this.nav_num+"_"+this.current_page);$("table."+this.table_class_sp_name+this.nav_num+" tr:last").addClass(this.end_sp_name+this.nav_num+"_"+this.current_page)}if(this.window_bind!=""){$("."+this.fbar_sp_name+this.nav_num).css("position","absolute")}var s=$(this.sp_btn_id+this.nav_num);if(s.size())s.click(function(){n.ajax();return false});this.max_page=this.current_page;this.min_page=this.current_page;this.add_data(this.current_page);var o=$("."+i).eq(0);this.data[this.current_page].pagesData=o.html();this.checkVisible();if(this.limit_page==this.current_page)$(this.sp_btn_id+this.nav_num).hide();if($(this.sp_btn_id+this.nav_num).size()===0)while(1){var u=this.getMark(this,"e",this.max_page,0);var a=false;if(u.size()>0){if(this.window_bind==""){var f=$(window).height();var l=u.offset().top}else{var c=$(this.window_bind);var f=c.height();var l=u.offset().top-c.offset().top}if(f>l)if(this.ajax())a=true}if(!a)break}if(this.window_bind==""){$(window).scroll(function(e){n.onScroll(e)})}else{$(this.window_bind).scroll(function(e){n.onScroll(e)})}}