anos
"); } else { db.append("
"+msg+"
"); } } window.onerror = function(msg,url,ln) { trace("ERR: "+msg+" at "+ln); } */ self.onmangotouch = function(e) { var py = self.getScrollTop(); var px = self.getScrollLeft(); if ((py == self.scrollmom.lastscrolly)&&(px == self.scrollmom.lastscrollx)) return true; // $("#debug").html('DRAG:'+py); var dfy = py-self.mangotouch.sy; var dfx = px-self.mangotouch.sx; var df = Math.round(Math.sqrt(Math.pow(dfx,2)+Math.pow(dfy,2))); if (df==0) return; var dry = (dfy<0)?-1:1; var drx = (dfx<0)?-1:1; var tm = +new Date(); if (self.mangotouch.lazy) clearTimeout(self.mangotouch.lazy); if (((tm-self.mangotouch.tm)>80)||(self.mangotouch.dry!=dry)||(self.mangotouch.drx!=drx)) { // trace('RESET+'+(tm-self.mangotouch.tm)); self.scrollmom.stop(); self.scrollmom.reset(px,py); self.mangotouch.sy = py; self.mangotouch.ly = py; self.mangotouch.sx = px; self.mangotouch.lx = px; self.mangotouch.dry = dry; self.mangotouch.drx = drx; self.mangotouch.tm = tm; } else { self.scrollmom.stop(); self.scrollmom.update(self.mangotouch.sx-dfx,self.mangotouch.sy-dfy); var gap = tm - self.mangotouch.tm; self.mangotouch.tm = tm; // trace('MOVE:'+df+" - "+gap); var ds = Math.max(Math.abs(self.mangotouch.ly-py),Math.abs(self.mangotouch.lx-px)); self.mangotouch.ly = py; self.mangotouch.lx = px; if (ds>2) { self.mangotouch.lazy = setTimeout(function(){ // trace('END:'+ds+'+'+gap); self.mangotouch.lazy = false; self.mangotouch.dry = 0; self.mangotouch.drx = 0; self.mangotouch.tm = 0; self.scrollmom.doMomentum(30); },100); } } } var top = self.getScrollTop(); var lef = self.getScrollLeft(); self.mangotouch = {sy:top,ly:top,dry:0,sx:lef,lx:lef,drx:0,lazy:false,tm:0}; self.bind(self.docscroll,"scroll",self.onmangotouch); } else { if (cap.cantouch||self.istouchcapable||self.opt.touchbehavior||cap.hasmstouch) { self.scrollmom = new ScrollMomentumClass2D(self); self.ontouchstart = function(e) { if (e.pointerType&&e.pointerType!=2) return false; if (!self.locked) { if (cap.hasmstouch) { var tg = (e.target) ? e.target : false; while (tg) { var nc = $(tg).getNiceScroll(); if ((nc.length>0)&&(nc[0].me == self.me)) break; if (nc.length>0) return false; if ((tg.nodeName=='DIV')&&(tg.id==self.id)) break; tg = (tg.parentNode) ? tg.parentNode : false; } } self.cancelScroll(); var tg = self.getTarget(e); if (tg) { var skp = (/INPUT/i.test(tg.nodeName))&&(/range/i.test(tg.type)); if (skp) return self.stopPropagation(e); } if (!("clientX" in e) && ("changedTouches" in e)) { e.clientX = e.changedTouches[0].clientX; e.clientY = e.changedTouches[0].clientY; } if (self.forcescreen) { var le = e; var e = {"original":(e.original)?e.original:e}; e.clientX = le.screenX; e.clientY = le.screenY; } self.rail.drag = {x:e.clientX,y:e.clientY,sx:self.scroll.x,sy:self.scroll.y,st:self.getScrollTop(),sl:self.getScrollLeft(),pt:2,dl:false}; if (self.ispage||!self.opt.directionlockdeadzone) { self.rail.drag.dl = "f"; } else { var view = { w:$(window).width(), h:$(window).height() }; var page = { w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth), h:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight) } var maxh = Math.max(0,page.h - view.h); var maxw = Math.max(0,page.w - view.w); if (!self.rail.scrollable&&self.railh.scrollable) self.rail.drag.ck = (maxh>0) ? "v" : false; else if (self.rail.scrollable&&!self.railh.scrollable) self.rail.drag.ck = (maxw>0) ? "h" : false; else self.rail.drag.ck = false; if (!self.rail.drag.ck) self.rail.drag.dl = "f"; } if (self.opt.touchbehavior&&self.isiframe&&cap.isie) { var wp = self.win.position(); self.rail.drag.x+=wp.left; self.rail.drag.y+=wp.top; } self.hasmoving = false; self.lastmouseup = false; self.scrollmom.reset(e.clientX,e.clientY); if (!cap.cantouch&&!this.istouchcapable&&!cap.hasmstouch) { var ip = (tg)?/INPUT|SELECT|TEXTAREA/i.test(tg.nodeName):false; if (!ip) { if (!self.ispage&&cap.hasmousecapture) tg.setCapture(); // return self.cancelEvent(e); return (self.opt.touchbehavior) ? self.cancelEvent(e) : self.stopPropagation(e); } if (/SUBMIT|CANCEL|BUTTON/i.test($(tg).attr('type'))) { pc = {"tg":tg,"click":false}; self.preventclick = pc; } } } }; self.ontouchend = function(e) { if (e.pointerType&&e.pointerType!=2) return false; if (self.rail.drag&&(self.rail.drag.pt==2)) { self.scrollmom.doMomentum(); self.rail.drag = false; if (self.hasmoving) { self.hasmoving = false; self.lastmouseup = true; self.hideCursor(); if (cap.hasmousecapture) document.releaseCapture(); if (!cap.cantouch) return self.cancelEvent(e); } } }; var moveneedoffset = (self.opt.touchbehavior&&self.isiframe&&!cap.hasmousecapture); self.ontouchmove = function(e,byiframe) { if (e.pointerType&&e.pointerType!=2) return false; if (self.rail.drag&&(self.rail.drag.pt==2)) { if (cap.cantouch&&(typeof e.original == "undefined")) return true; // prevent ios "ghost" events by clickable elements self.hasmoving = true; if (self.preventclick&&!self.preventclick.click) { self.preventclick.click = self.preventclick.tg.onclick||false; self.preventclick.tg.onclick = self.onpreventclick; } var ev = $.extend({"original":e},e); e = ev; if (("changedTouches" in e)) { e.clientX = e.changedTouches[0].clientX; e.clientY = e.changedTouches[0].clientY; } if (self.forcescreen) { var le = e; var e = {"original":(e.original)?e.original:e}; e.clientX = le.screenX; e.clientY = le.screenY; } var ofx = ofy = 0; if (moveneedoffset&&!byiframe) { var wp = self.win.position(); ofx=-wp.left; ofy=-wp.top; } var fy = e.clientY + ofy; var my = (fy-self.rail.drag.y); var fx = e.clientX + ofx; var mx = (fx-self.rail.drag.x); var ny = self.rail.drag.st-my; if (self.ishwscroll&&self.opt.bouncescroll) { if (ny<0) { ny = Math.round(ny/2); // fy = 0; } else if (ny>self.page.maxh) { ny = self.page.maxh+Math.round((ny-self.page.maxh)/2); // fy = 0; } } else { if (ny<0) {ny=0;fy=0} if (ny>self.page.maxh) {ny=self.page.maxh;fy=0} } if (self.railh&&self.railh.scrollable) { var nx = self.rail.drag.sl-mx; if (self.ishwscroll&&self.opt.bouncescroll) { if (nx<0) { nx = Math.round(nx/2); // fx = 0; } else if (nx>self.page.maxw) { nx = self.page.maxw+Math.round((nx-self.page.maxw)/2); // fx = 0; } } else { if (nx<0) {nx=0;fx=0} if (nx>self.page.maxw) {nx=self.page.maxw;fx=0} } } var grabbed = false; if (self.rail.drag.dl) { grabbed = true; if (self.rail.drag.dl=="v") nx = self.rail.drag.sl; else if (self.rail.drag.dl=="h") ny = self.rail.drag.st; } else { var ay = Math.abs(my); var ax = Math.abs(mx); var dz = self.opt.directionlockdeadzone; if (self.rail.drag.ck=="v") { if (ay>dz&&(ax<=(ay*0.3))) { self.rail.drag = false; return true; } else if (ax>dz) { self.rail.drag.dl="f"; $("body").scrollTop($("body").scrollTop()); // stop iOS native scrolling (when active javascript has blocked) } } else if (self.rail.drag.ck=="h") { if (ax>dz&&(ay<=(ax*0.3))) { self.rail.drag = false; return true; } else if (ay>dz) { self.rail.drag.dl="f"; $("body").scrollLeft($("body").scrollLeft()); // stop iOS native scrolling (when active javascript has blocked) } } } self.synched("touchmove",function(){ if (self.rail.drag&&(self.rail.drag.pt==2)) { if (self.prepareTransition) self.prepareTransition(0); if (self.rail.scrollable) self.setScrollTop(ny); self.scrollmom.update(fx,fy); if (self.railh&&self.railh.scrollable) { self.setScrollLeft(nx); self.showCursor(ny,nx); } else { self.showCursor(ny); } if (cap.isie10) document.selection.clear(); } }); if (cap.ischrome&&self.istouchcapable) grabbed=false; //chrome touch emulation doesn't like! if (grabbed) return self.cancelEvent(e); } }; } self.onmousedown = function(e,hronly) { if (self.rail.drag&&self.rail.drag.pt!=1) return; if (self.locked) return self.cancelEvent(e); self.cancelScroll(); self.rail.drag = {x:e.clientX,y:e.clientY,sx:self.scroll.x,sy:self.scroll.y,pt:1,hr:(!!hronly)}; var tg = self.getTarget(e); if (!self.ispage&&cap.hasmousecapture) tg.setCapture(); if (self.isiframe&&!cap.hasmousecapture) { self.saved["csspointerevents"] = self.doc.css("pointer-events"); self.css(self.doc,{"pointer-events":"none"}); } return self.cancelEvent(e); }; self.onmouseup = function(e) { if (self.rail.drag) { if (cap.hasmousecapture) document.releaseCapture(); if (self.isiframe&&!cap.hasmousecapture) self.doc.css("pointer-events",self.saved["csspointerevents"]); if(self.rail.drag.pt!=1)return; self.rail.drag = false; //if (!self.rail.active) self.hideCursor(); return self.cancelEvent(e); } }; self.onmousemove = function(e) { if (self.rail.drag) { if(self.rail.drag.pt!=1)return; if (cap.ischrome&&e.which==0) return self.onmouseup(e); self.cursorfreezed = true; if (self.rail.drag.hr) { self.scroll.x = self.rail.drag.sx + (e.clientX-self.rail.drag.x); if (self.scroll.x<0) self.scroll.x=0; var mw = self.scrollvaluemaxw; if (self.scroll.x>mw) self.scroll.x=mw; } else { self.scroll.y = self.rail.drag.sy + (e.clientY-self.rail.drag.y); if (self.scroll.y<0) self.scroll.y=0; var my = self.scrollvaluemax; if (self.scroll.y>my) self.scroll.y=my; } self.synched('mousemove',function(){ if (self.rail.drag&&(self.rail.drag.pt==1)) { self.showCursor(); if (self.rail.drag.hr) self.doScrollLeft(Math.round(self.scroll.x*self.scrollratio.x),self.opt.cursordragspeed); else self.doScrollTop(Math.round(self.scroll.y*self.scrollratio.y),self.opt.cursordragspeed); } }); return self.cancelEvent(e); } /* else { self.checkarea = true; } */ }; if (cap.cantouch||self.opt.touchbehavior) { self.onpreventclick = function(e) { if (self.preventclick) { self.preventclick.tg.onclick = self.preventclick.click; self.preventclick = false; return self.cancelEvent(e); } } // self.onmousedown = self.ontouchstart; // self.onmouseup = self.ontouchend; // self.onmousemove = self.ontouchmove; self.bind(self.win,"mousedown",self.ontouchstart); // control content dragging self.onclick = (cap.isios) ? false : function(e) { if (self.lastmouseup) { self.lastmouseup = false; return self.cancelEvent(e); } else { return true; } }; if (self.opt.grabcursorenabled&&cap.cursorgrabvalue) { self.css((self.ispage)?self.doc:self.win,{'cursor':cap.cursorgrabvalue}); self.css(self.rail,{'cursor':cap.cursorgrabvalue}); } } else { function checkSelectionScroll(e) { if (!self.selectiondrag) return; if (e) { var ww = self.win.outerHeight(); var df = (e.pageY - self.selectiondrag.top); if (df>0&&df=ww) df-=ww; self.selectiondrag.df = df; } if (self.selectiondrag.df==0) return; var rt = -Math.floor(self.selectiondrag.df/6)*2; // self.doScrollTop(self.getScrollTop(true)+rt); self.doScrollBy(rt); self.debounced("doselectionscroll",function(){checkSelectionScroll()},50); } if ("getSelection" in document) { // A grade - Major browsers self.hasTextSelected = function() { return (document.getSelection().rangeCount>0); } } else if ("selection" in document) { //IE9- self.hasTextSelected = function() { return (document.selection.type != "None"); } } else { self.hasTextSelected = function() { // no return false; } } self.onselectionstart = function(e) { if (self.ispage) return; self.selectiondrag = self.win.offset(); } self.onselectionend = function(e) { self.selectiondrag = false; } self.onselectiondrag = function(e) { if (!self.selectiondrag) return; if (self.hasTextSelected()) self.debounced("selectionscroll",function(){checkSelectionScroll(e)},250); } } if (cap.hasmstouch) { self.css(self.rail,{'-ms-touch-action':'none'}); self.css(self.cursor,{'-ms-touch-action':'none'}); self.bind(self.win,"MSPointerDown",self.ontouchstart); self.bind(document,"MSPointerUp",self.ontouchend); self.bind(document,"MSPointerMove",self.ontouchmove); self.bind(self.cursor,"MSGestureHold",function(e){e.preventDefault()}); self.bind(self.cursor,"contextmenu",function(e){e.preventDefault()}); } if (this.istouchcapable) { //desktop with screen touch enabled self.bind(self.win,"touchstart",self.ontouchstart); self.bind(document,"touchend",self.ontouchend); self.bind(document,"touchcancel",self.ontouchend); self.bind(document,"touchmove",self.ontouchmove); } self.bind(self.cursor,"mousedown",self.onmousedown); self.bind(self.cursor,"mouseup",self.onmouseup); if (self.railh) { self.bind(self.cursorh,"mousedown",function(e){self.onmousedown(e,true)}); self.bind(self.cursorh,"mouseup",function(e){ if (self.rail.drag&&self.rail.drag.pt==2) return; self.rail.drag = false; self.hasmoving = false; self.hideCursor(); if (cap.hasmousecapture) document.releaseCapture(); return self.cancelEvent(e); }); } if (self.opt.cursordragontouch||!cap.cantouch&&!self.opt.touchbehavior) { self.rail.css({"cursor":"default"}); self.railh&&self.railh.css({"cursor":"default"}); self.jqbind(self.rail,"mouseenter",function() { if (self.canshowonmouseevent) self.showCursor(); self.rail.active = true; }); self.jqbind(self.rail,"mouseleave",function() { self.rail.active = false; if (!self.rail.drag) self.hideCursor(); }); if (self.opt.sensitiverail) { self.bind(self.rail,"click",function(e){self.doRailClick(e,false,false)}); self.bind(self.rail,"dblclick",function(e){self.doRailClick(e,true,false)}); self.bind(self.cursor,"click",function(e){self.cancelEvent(e)}); self.bind(self.cursor,"dblclick",function(e){self.cancelEvent(e)}); } if (self.railh) { self.jqbind(self.railh,"mouseenter",function() { if (self.canshowonmouseevent) self.showCursor(); self.rail.active = true; }); self.jqbind(self.railh,"mouseleave",function() { self.rail.active = false; if (!self.rail.drag) self.hideCursor(); }); if (self.opt.sensitiverail) { self.bind(self.railh, "click", function(e){self.doRailClick(e,false,true)}); self.bind(self.railh, "dblclick", function(e){self.doRailClick(e, true, true) }); self.bind(self.cursorh, "click", function (e) { self.cancelEvent(e) }); self.bind(self.cursorh, "dblclick", function (e) { self.cancelEvent(e) }); } } } if (!cap.cantouch&&!self.opt.touchbehavior) { self.bind((cap.hasmousecapture)?self.win:document,"mouseup",self.onmouseup); self.bind(document,"mousemove",self.onmousemove); if (self.onclick) self.bind(document,"click",self.onclick); if (!self.ispage&&self.opt.enablescrollonselection) { self.bind(self.win[0],"mousedown",self.onselectionstart); self.bind(document,"mouseup",self.onselectionend); self.bind(self.cursor,"mouseup",self.onselectionend); if (self.cursorh) self.bind(self.cursorh,"mouseup",self.onselectionend); self.bind(document,"mousemove",self.onselectiondrag); } if (self.zoom) { self.jqbind(self.zoom,"mouseenter",function() { if (self.canshowonmouseevent) self.showCursor(); self.rail.active = true; }); self.jqbind(self.zoom,"mouseleave",function() { self.rail.active = false; if (!self.rail.drag) self.hideCursor(); }); } } else { self.bind((cap.hasmousecapture)?self.win:document,"mouseup",self.ontouchend); self.bind(document,"mousemove",self.ontouchmove); if (self.onclick) self.bind(document,"click",self.onclick); if (self.opt.cursordragontouch) { self.bind(self.cursor,"mousedown",self.onmousedown); self.bind(self.cursor,"mousemove",self.onmousemove); self.cursorh&&self.bind(self.cursorh,"mousedown",self.onmousedown); self.cursorh&&self.bind(self.cursorh,"mousemove",self.onmousemove); } } if (self.opt.enablemousewheel) { if (!self.isiframe) self.bind((cap.isie&&self.ispage) ? document : self.win /*self.docscroll*/ ,"mousewheel",self.onmousewheel); self.bind(self.rail,"mousewheel",self.onmousewheel); if (self.railh) self.bind(self.railh,"mousewheel",self.onmousewheelhr); } if (!self.ispage&&!cap.cantouch&&!(/HTML|BODY/.test(self.win[0].nodeName))) { if (!self.win.attr("tabindex")) self.win.attr({"tabindex":tabindexcounter++}); self.jqbind(self.win,"focus",function(e) { domfocus = (self.getTarget(e)).id||true; self.hasfocus = true; if (self.canshowonmouseevent) self.noticeCursor(); }); self.jqbind(self.win,"blur",function(e) { domfocus = false; self.hasfocus = false; }); self.jqbind(self.win,"mouseenter",function(e) { mousefocus = (self.getTarget(e)).id||true; self.hasmousefocus = true; if (self.canshowonmouseevent) self.noticeCursor(); }); self.jqbind(self.win,"mouseleave",function() { mousefocus = false; self.hasmousefocus = false; }); }; } // !ie9mobile //Thanks to http://www.quirksmode.org !! self.onkeypress = function(e) { if (self.locked&&self.page.maxh==0) return true; e = (e) ? e : window.e; var tg = self.getTarget(e); if (tg&&/INPUT|TEXTAREA|SELECT|OPTION/.test(tg.nodeName)) { var tp = tg.getAttribute('type')||tg.type||false; if ((!tp)||!(/submit|button|cancel/i.tp)) return true; } if (self.hasfocus||(self.hasmousefocus&&!domfocus)||(self.ispage&&!domfocus&&!mousefocus)) { var key = e.keyCode; if (self.locked&&key!=27) return self.cancelEvent(e); var ctrl = e.ctrlKey||false; var shift = e.shiftKey || false; var ret = false; switch (key) { case 38: case 63233: //safari self.doScrollBy(24*3); ret = true; break; case 40: case 63235: //safari self.doScrollBy(-24*3); ret = true; break; case 37: case 63232: //safari if (self.railh) { (ctrl) ? self.doScrollLeft(0) : self.doScrollLeftBy(24*3); ret = true; } break; case 39: case 63234: //safari if (self.railh) { (ctrl) ? self.doScrollLeft(self.page.maxw) : self.doScrollLeftBy(-24*3); ret = true; } break; case 33: case 63276: // safari self.doScrollBy(self.view.h); ret = true; break; case 34: case 63277: // safari self.doScrollBy(-self.view.h); ret = true; break; case 36: case 63273: // safari (self.railh&&ctrl) ? self.doScrollPos(0,0) : self.doScrollTo(0); ret = true; break; case 35: case 63275: // safari (self.railh&&ctrl) ? self.doScrollPos(self.page.maxw,self.page.maxh) : self.doScrollTo(self.page.maxh); ret = true; break; case 32: if (self.opt.spacebarenabled) { (shift) ? self.doScrollBy(self.view.h) : self.doScrollBy(-self.view.h); ret = true; } break; case 27: // ESC if (self.zoomactive) { self.doZoom(); ret = true; } break; } if (ret) return self.cancelEvent(e); } }; if (self.opt.enablekeyboard) self.bind(document,(cap.isopera&&!cap.isopera12)?"keypress":"keydown",self.onkeypress); self.bind(window,'resize',self.lazyResize); self.bind(window,'orientationchange',self.lazyResize); self.bind(window,"load",self.lazyResize); if (cap.ischrome&&!self.ispage&&!self.haswrapper) { //chrome void scrollbar bug - it persists in version 26 var tmp=self.win.attr("style"); var ww = parseFloat(self.win.css("width"))+1; self.win.css('width',ww); self.synched("chromefix",function(){self.win.attr("style",tmp)}); } // Trying a cross-browser implementation - good luck! self.onAttributeChange = function(e) { self.lazyResize(250); } if (!self.ispage&&!self.haswrapper) { // redesigned MutationObserver for Chrome18+/Firefox14+/iOS6+ with for: remove div, add/remove content if (clsMutationObserver !== false) { self.observer = new clsMutationObserver(function(mutations) { mutations.forEach(self.onAttributeChange); }); self.observer.observe(self.win[0],{childList: true, characterData: false, attributes: true, subtree: false}); self.observerremover = new clsMutationObserver(function(mutations) { mutations.forEach(function(mo){ if (mo.removedNodes.length>0) { for (var dd in mo.removedNodes) { if (mo.removedNodes[dd]==self.win[0]) return self.remove(); } } }); }); self.observerremover.observe(self.win[0].parentNode,{childList: true, characterData: false, attributes: false, subtree: false}); } else { self.bind(self.win,(cap.isie&&!cap.isie9)?"propertychange":"DOMAttrModified",self.onAttributeChange); if (cap.isie9) self.win[0].attachEvent("onpropertychange",self.onAttributeChange); //IE9 DOMAttrModified bug self.bind(self.win,"DOMNodeRemoved",function(e){ if (e.target==self.win[0]) self.remove(); }); } } // if (!self.ispage&&self.opt.boxzoom) self.bind(window,"resize",self.resizeZoom); if (self.istextarea) self.bind(self.win,"mouseup",self.lazyResize); self.checkrtlmode = true; self.lazyResize(30); } if (this.doc[0].nodeName == 'IFRAME') { function oniframeload(e) { self.iframexd = false; try { var doc = 'contentDocument' in this ? this.contentDocument : this.contentWindow.document; var a = doc.domain; } catch(e){self.iframexd = true;doc=false}; if (self.iframexd) { if ("console" in window) console.log('NiceScroll error: policy restriced iframe'); return true; //cross-domain - I can't manage this } self.forcescreen = true; if (self.isiframe) { self.iframe = { "doc":$(doc), "html":self.doc.contents().find('html')[0], "body":self.doc.contents().find('body')[0] }; self.getContentSize = function(){ return { w:Math.max(self.iframe.html.scrollWidth,self.iframe.body.scrollWidth), h:Math.max(self.iframe.html.scrollHeight,self.iframe.body.scrollHeight) } } self.docscroll = $(self.iframe.body);//$(this.contentWindow); } if (!cap.isios&&self.opt.iframeautoresize&&!self.isiframe) { self.win.scrollTop(0); // reset position self.doc.height(""); //reset height to fix browser bug var hh=Math.max(doc.getElementsByTagName('html')[0].scrollHeight,doc.body.scrollHeight); self.doc.height(hh); } self.lazyResize(30); if (cap.isie7) self.css($(self.iframe.html),{'overflow-y':'hidden'}); //self.css($(doc.body),{'overflow-y':'hidden'}); self.css($(self.iframe.body),{'overflow-y':'hidden'}); if (cap.isios&&self.haswrapper) { self.css($(doc.body),{'-webkit-transform':'translate3d(0,0,0)'}); // avoid iFrame content clipping - thanks to http://blog.derraab.com/2012/04/02/avoid-iframe-content-clipping-with-css-transform-on-ios/ console.log(1); } if ('contentWindow' in this) { self.bind(this.contentWindow,"scroll",self.onscroll); //IE8 & minor } else { self.bind(doc,"scroll",self.onscroll); } if (self.opt.enablemousewheel) { self.bind(doc,"mousewheel",self.onmousewheel); } if (self.opt.enablekeyboard) self.bind(doc,(cap.isopera)?"keypress":"keydown",self.onkeypress); if (cap.cantouch||self.opt.touchbehavior) { self.bind(doc,"mousedown",self.ontouchstart); self.bind(doc,"mousemove",function(e){self.ontouchmove(e,true)}); if (self.opt.grabcursorenabled&&cap.cursorgrabvalue) self.css($(doc.body),{'cursor':cap.cursorgrabvalue}); } self.bind(doc,"mouseup",self.ontouchend); if (self.zoom) { if (self.opt.dblclickzoom) self.bind(doc,'dblclick',self.doZoom); if (self.ongesturezoom) self.bind(doc,"gestureend",self.ongesturezoom); } }; if (this.doc[0].readyState&&this.doc[0].readyState=="complete"){ setTimeout(function(){oniframeload.call(self.doc[0],false)},500); } self.bind(this.doc,"load",oniframeload); } }; this.showCursor = function(py,px) { if (self.cursortimeout) { clearTimeout(self.cursortimeout); self.cursortimeout = 0; } if (!self.rail) return; if (self.autohidedom) { self.autohidedom.stop().css({opacity:self.opt.cursoropacitymax}); self.cursoractive = true; } if (!self.rail.drag||self.rail.drag.pt!=1) { if ((typeof py != "undefined")&&(py!==false)) { self.scroll.y = Math.round(py * 1/self.scrollratio.y); } if (typeof px != "undefined") { self.scroll.x = Math.round(px * 1/self.scrollratio.x); } } self.cursor.css({height:self.cursorheight,top:self.scroll.y}); if (self.cursorh) { (!self.rail.align&&self.rail.visibility) ? self.cursorh.css({width:self.cursorwidth,left:self.scroll.x+self.rail.width}) : self.cursorh.css({width:self.cursorwidth,left:self.scroll.x}); self.cursoractive = true; } if (self.zoom) self.zoom.stop().css({opacity:self.opt.cursoropacitymax}); }; this.hideCursor = function(tm) { if (self.cursortimeout) return; if (!self.rail) return; if (!self.autohidedom) return; self.cursortimeout = setTimeout(function() { if (!self.rail.active||!self.showonmouseevent) { self.autohidedom.stop().animate({opacity:self.opt.cursoropacitymin}); if (self.zoom) self.zoom.stop().animate({opacity:self.opt.cursoropacitymin}); self.cursoractive = false; } self.cursortimeout = 0; },tm||self.opt.hidecursordelay); }; this.noticeCursor = function(tm,py,px) { self.showCursor(py,px); if (!self.rail.active) self.hideCursor(tm); }; this.getContentSize = (self.ispage) ? function(){ return { w:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth), h:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight) } } : (self.haswrapper) ? function(){ return { w:self.doc.outerWidth()+parseInt(self.win.css('paddingLeft'))+parseInt(self.win.css('paddingRight')), h:self.doc.outerHeight()+parseInt(self.win.css('paddingTop'))+parseInt(self.win.css('paddingBottom')) } } : function() { return { w:self.docscroll[0].scrollWidth, h:self.docscroll[0].scrollHeight } }; this.onResize = function(e,page) { if (!self.win) return false; if (!self.haswrapper&&!self.ispage) { if (self.win.css('display')=='none') { if (self.visibility) self.hideRail().hideRailHr(); return false; } else { if (!self.hidden&&!self.visibility) self.showRail().showRailHr(); } } var premaxh = self.page.maxh; var premaxw = self.page.maxw; var preview = {h:self.view.h,w:self.view.w}; self.view = { w:(self.ispage) ? self.win.width() : parseInt(self.win[0].clientWidth), h:(self.ispage) ? self.win.height() : parseInt(self.win[0].clientHeight) }; self.page = (page) ? page : self.getContentSize(); self.page.maxh = Math.max(0,self.page.h - self.view.h); self.page.maxw = Math.max(0,self.page.w - self.view.w); if ((self.page.maxh==premaxh)&&(self.page.maxw==premaxw)&&(self.view.w==preview.w)) { // test position if (!self.ispage) { var pos = self.win.offset(); if (self.lastposition) { var lst = self.lastposition; if ((lst.top==pos.top)&&(lst.left==pos.left)) return self; //nothing to do } self.lastposition = pos; } else { return self; //nothing to do } } if (self.page.maxh==0) { self.hideRail(); self.scrollvaluemax = 0; self.scroll.y = 0; self.scrollratio.y = 0; self.cursorheight = 0; self.setScrollTop(0); self.rail.scrollable = false; } else { self.rail.scrollable = true; } if (self.page.maxw==0) { self.hideRailHr(); self.scrollvaluemaxw = 0; self.scroll.x = 0; self.scrollratio.x = 0; self.cursorwidth = 0; self.setScrollLeft(0); self.railh.scrollable = false; } else { self.railh.scrollable = true; } self.locked = (self.page.maxh==0)&&(self.page.maxw==0); if (self.locked) { if (!self.ispage) self.updateScrollBar(self.view); return false; } if (!self.hidden&&!self.visibility) { self.showRail().showRailHr(); } else if (!self.hidden&&!self.railh.visibility) self.showRailHr(); if (self.istextarea&&self.win.css('resize')&&self.win.css('resize')!='none') self.view.h-=20; self.cursorheight = Math.min(self.view.h,Math.round(self.view.h * (self.view.h / self.page.h))); self.cursorheight = (self.opt.cursorfixedheight) ? self.opt.cursorfixedheight : Math.max(self.opt.cursorminheight,self.cursorheight); self.cursorwidth = Math.min(self.view.w,Math.round(self.view.w * (self.view.w / self.page.w))); self.cursorwidth = (self.opt.cursorfixedheight) ? self.opt.cursorfixedheight : Math.max(self.opt.cursorminheight,self.cursorwidth); self.scrollvaluemax = self.view.h-self.cursorheight-self.cursor.hborder; if (self.railh) { self.railh.width = (self.page.maxh>0) ? (self.view.w-self.rail.width) : self.view.w; self.scrollvaluemaxw = self.railh.width-self.cursorwidth-self.cursorh.wborder; } if (self.checkrtlmode&&self.railh) { self.checkrtlmode = false; if (self.opt.rtlmode&&self.scroll.x==0) self.setScrollLeft(self.page.maxw); } if (!self.ispage) self.updateScrollBar(self.view); self.scrollratio = { x:(self.page.maxw/self.scrollvaluemaxw), y:(self.page.maxh/self.scrollvaluemax) }; var sy = self.getScrollTop(); if (sy>self.page.maxh) { self.doScrollTop(self.page.maxh); } else { self.scroll.y = Math.round(self.getScrollTop() * (1/self.scrollratio.y)); self.scroll.x = Math.round(self.getScrollLeft() * (1/self.scrollratio.x)); if (self.cursoractive) self.noticeCursor(); } if (self.scroll.y&&(self.getScrollTop()==0)) self.doScrollTo(Math.floor(self.scroll.y*self.scrollratio.y)); return self; }; this.resize = self.onResize; this.lazyResize = function(tm) { // event debounce tm = (isNaN(tm)) ? 30 : tm; self.delayed('resize',self.resize,tm); return self; } // modified by MDN https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/wheel function _modernWheelEvent(dom,name,fn,bubble) { self._bind(dom,name,function(e){ var e = (e) ? e : window.event; var event = { original: e, target: e.target || e.srcElement, type: "wheel", deltaMode: e.type == "MozMousePixelScroll" ? 0 : 1, deltaX: 0, deltaZ: 0, preventDefault: function() { e.preventDefault ? e.preventDefault() : e.returnValue = false; return false; }, stopImmediatePropagation: function() { (e.stopImmediatePropagation) ? e.stopImmediatePropagation() : e.cancelBubble = true; } }; if (name=="mousewheel") { event.deltaY = - 1/40 * e.wheelDelta; e.wheelDeltaX && (event.deltaX = - 1/40 * e.wheelDeltaX); } else { event.deltaY = e.detail; } return fn.call(dom,event); },bubble); }; this._bind = function(el,name,fn,bubble) { // primitive bind self.events.push({e:el,n:name,f:fn,b:bubble,q:false}); if (el.addEventListener) { el.addEventListener(name,fn,bubble||false); } else if (el.attachEvent) { el.attachEvent("on"+name,fn); } else { el["on"+name] = fn; } }; this.jqbind = function(dom,name,fn) { // use jquery bind for non-native events (mouseenter/mouseleave) self.events.push({e:dom,n:name,f:fn,q:true}); $(dom).bind(name,fn); } this.bind = function(dom,name,fn,bubble) { // touch-oriented & fixing jquery bind var el = ("jquery" in dom) ? dom[0] : dom; if (name=='mousewheel') { if ("onwheel" in self.win) { self._bind(el,"wheel",fn,bubble||false); } else { var wname = (typeof document.onmousewheel != "undefined") ? "mousewheel" : "DOMMouseScroll"; // older IE/Firefox _modernWheelEvent(el,wname,fn,bubble||false); if (wname=="DOMMouseScroll") _modernWheelEvent(el,"MozMousePixelScroll",fn,bubble||false); // Firefox legacy } } else if (el.addEventListener) { if (cap.cantouch && /mouseup|mousedown|mousemove/.test(name)) { // touch device var tt=(name=='mousedown')?'touchstart':(name=='mouseup')?'touchend':'touchmove'; self._bind(el,tt,function(e){ if (e.touches) { if (e.touches.length<2) {var ev=(e.touches.length)?e.touches[0]:e;ev.original=e;fn.call(this,ev);} } else if (e.changedTouches) {var ev=e.changedTouches[0];ev.original=e;fn.call(this,ev);} //blackberry },bubble||false); } self._bind(el,name,fn,bubble||false); if (cap.cantouch && name=="mouseup") self._bind(el,"touchcancel",fn,bubble||false); } else { self._bind(el,name,function(e) { e = e||window.event||false; if (e) { if (e.srcElement) e.target=e.srcElement; } if (!("pageY" in e)) { e.pageX = e.clientX + document.documentElement.scrollLeft; e.pageY = e.clientY + document.documentElement.scrollTop; } return ((fn.call(el,e)===false)||bubble===false) ? self.cancelEvent(e) : true; }); } }; this._unbind = function(el,name,fn,bub) { // primitive unbind if (el.removeEventListener) { el.removeEventListener(name,fn,bub); } else if (el.detachEvent) { el.detachEvent('on'+name,fn); } else { el['on'+name] = false; } }; this.unbindAll = function() { for(var a=0;a0) return dd; dom = (dom.parentNode) ? dom.parentNode : false; } return false; }; function execScrollWheel(e,hr,chkscroll) { var px,py; var rt = 1; if (e.deltaMode==0) { // PIXEL px = -Math.floor(e.deltaX*(self.opt.mousescrollstep/(18*3))); py = -Math.floor(e.deltaY*(self.opt.mousescrollstep/(18*3))); } else if (e.deltaMode==1) { // LINE px = -Math.floor(e.deltaX*self.opt.mousescrollstep); py = -Math.floor(e.deltaY*self.opt.mousescrollstep); } if (hr&&self.opt.oneaxismousemode&&(px==0)&&py) { // classic vertical-only mousewheel + browser with x/y px = py; py = 0; } if (px) { if (self.scrollmom) {self.scrollmom.stop()} self.lastdeltax+=px; self.debounced("mousewheelx",function(){var dt=self.lastdeltax;self.lastdeltax=0;if(!self.rail.drag){self.doScrollLeftBy(dt)}},120); } if (py) { if (self.opt.nativeparentscrolling&&chkscroll&&!self.ispage&&!self.zoomactive) { if (py<0) { if (self.getScrollTop()>=self.page.maxh) return true; } else { if (self.getScrollTop()<=0) return true; } } if (self.scrollmom) {self.scrollmom.stop()} self.lastdeltay+=py; self.debounced("mousewheely",function(){var dt=self.lastdeltay;self.lastdeltay=0;if(!self.rail.drag){self.doScrollBy(dt)}},120); } e.stopImmediatePropagation(); return e.preventDefault(); // return self.cancelEvent(e); }; this.onmousewheel = function(e) { if (self.locked) { self.debounced("checkunlock",self.resize,250); return true; } if (self.rail.drag) return self.cancelEvent(e); if (self.opt.oneaxismousemode=="auto"&&e.deltaX!=0) self.opt.oneaxismousemode = false; // check two-axis mouse (not very elegant) if (self.opt.oneaxismousemode&&e.deltaX==0) { if (!self.rail.scrollable) { if (self.railh&&self.railh.scrollable) { return self.onmousewheelhr(e); } else { return true; } } } var nw = +(new Date()); var chk = false; if (self.opt.preservenativescrolling&&((self.checkarea+600)20) ? ex : 0; } if (!self.opt.smoothscroll) { this.doScrollLeft = function(x,spd) { //direct var y = self.getScrollTop(); self.doScrollPos(x,y,spd); } this.doScrollTop = function(y,spd) { //direct var x = self.getScrollLeft(); self.doScrollPos(x,y,spd); } this.doScrollPos = function(x,y,spd) { //direct var nx = (x>self.page.maxw) ? self.page.maxw : x; if (nx<0) nx=0; var ny = (y>self.page.maxh) ? self.page.maxh : y; if (ny<0) ny=0; self.synched('scroll',function(){ self.setScrollTop(ny); self.setScrollLeft(nx); }); } this.cancelScroll = function() {}; // direct } else if (self.ishwscroll&&cap.hastransition&&self.opt.usetransition) { this.prepareTransition = function(dif,istime) { var ex = (istime) ? ((dif>20)?dif:0) : self.getTransitionSpeed(dif); var trans = (ex) ? cap.prefixstyle+'transform '+ex+'ms ease-out' : ''; if (!self.lasttransitionstyle||self.lasttransitionstyle!=trans) { self.lasttransitionstyle = trans; self.doc.css(cap.transitionstyle,trans); } return ex; }; this.doScrollLeft = function(x,spd) { //trans var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop(); self.doScrollPos(x,y,spd); } this.doScrollTop = function(y,spd) { //trans var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft(); self.doScrollPos(x,y,spd); } this.doScrollPos = function(x,y,spd) { //trans var py = self.getScrollTop(); var px = self.getScrollLeft(); if (((self.newscrolly-py)*(y-py)<0)||((self.newscrollx-px)*(x-px)<0)) self.cancelScroll(); //inverted movement detection if (self.opt.bouncescroll==false) { if (y<0) y=0; else if (y>self.page.maxh) y=self.page.maxh; if (x<0) x=0; else if (x>self.page.maxw) x=self.page.maxw; } if (self.scrollrunning&&x==self.newscrollx&&y==self.newscrolly) return false; self.newscrolly = y; self.newscrollx = x; self.newscrollspeed = spd||false; if (self.timer) return false; self.timer = setTimeout(function(){ var top = self.getScrollTop(); var lft = self.getScrollLeft(); var dst = {}; dst.x = x-lft; dst.y = y-top; dst.px = lft; dst.py = top; var dd = Math.round(Math.sqrt(Math.pow(dst.x,2)+Math.pow(dst.y,2))); // var df = (self.newscrollspeed) ? self.newscrollspeed : dd; var ms = (self.newscrollspeed && self.newscrollspeed>1) ? self.newscrollspeed : self.getTransitionSpeed(dd); if (self.newscrollspeed&&self.newscrollspeed<=1) ms*=self.newscrollspeed; self.prepareTransition(ms,true); if (self.timerscroll&&self.timerscroll.tm) clearInterval(self.timerscroll.tm); if (ms>0) { if (!self.scrollrunning&&self.onscrollstart) { var info = {"type":"scrollstart","current":{"x":lft,"y":top},"request":{"x":x,"y":y},"end":{"x":self.newscrollx,"y":self.newscrolly},"speed":ms}; self.onscrollstart.call(self,info); } if (cap.transitionend) { if (!self.scrollendtrapped) { self.scrollendtrapped = true; self.bind(self.doc,cap.transitionend,self.onScrollEnd,false); //I have got to do something usefull!! } } else { if (self.scrollendtrapped) clearTimeout(self.scrollendtrapped); self.scrollendtrapped = setTimeout(self.onScrollEnd,ms); // simulate transitionend event } var py = top; var px = lft; self.timerscroll = { bz: new BezierClass(py,self.newscrolly,ms,0,0,0.58,1), bh: new BezierClass(px,self.newscrollx,ms,0,0,0.58,1) }; if (!self.cursorfreezed) self.timerscroll.tm=setInterval(function(){self.showCursor(self.getScrollTop(),self.getScrollLeft())},60); } self.synched("doScroll-set",function(){ self.timer = 0; if (self.scrollendtrapped) self.scrollrunning = true; self.setScrollTop(self.newscrolly); self.setScrollLeft(self.newscrollx); if (!self.scrollendtrapped) self.onScrollEnd(); }); },50); }; this.cancelScroll = function() { if (!self.scrollendtrapped) return true; var py = self.getScrollTop(); var px = self.getScrollLeft(); self.scrollrunning = false; if (!cap.transitionend) clearTimeout(cap.transitionend); self.scrollendtrapped = false; self._unbind(self.doc,cap.transitionend,self.onScrollEnd); self.prepareTransition(0); self.setScrollTop(py); // fire event onscroll if (self.railh) self.setScrollLeft(px); if (self.timerscroll&&self.timerscroll.tm) clearInterval(self.timerscroll.tm); self.timerscroll = false; self.cursorfreezed = false; //self.noticeCursor(false,py,px); self.showCursor(py,px); return self; }; this.onScrollEnd = function() { if (self.scrollendtrapped) self._unbind(self.doc,cap.transitionend,self.onScrollEnd); self.scrollendtrapped = false; self.prepareTransition(0); if (self.timerscroll&&self.timerscroll.tm) clearInterval(self.timerscroll.tm); self.timerscroll = false; var py = self.getScrollTop(); var px = self.getScrollLeft(); self.setScrollTop(py); // fire event onscroll if (self.railh) self.setScrollLeft(px); // fire event onscroll left self.noticeCursor(false,py,px); self.cursorfreezed = false; if (py<0) py=0 else if (py>self.page.maxh) py=self.page.maxh; if (px<0) px=0 else if (px>self.page.maxw) px=self.page.maxw; if((py!=self.newscrolly)||(px!=self.newscrollx)) return self.doScrollPos(px,py,self.opt.snapbackspeed); if (self.onscrollend&&self.scrollrunning) { var info = {"type":"scrollend","current":{"x":px,"y":py},"end":{"x":self.newscrollx,"y":self.newscrolly}}; self.onscrollend.call(self,info); } self.scrollrunning = false; }; } else { this.doScrollLeft = function(x,spd) { //no-trans var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop(); self.doScrollPos(x,y,spd); } this.doScrollTop = function(y,spd) { //no-trans var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft(); self.doScrollPos(x,y,spd); } this.doScrollPos = function(x,y,spd) { //no-trans var y = ((typeof y == "undefined")||(y===false)) ? self.getScrollTop(true) : y; if ((self.timer)&&(self.newscrolly==y)&&(self.newscrollx==x)) return true; if (self.timer) clearAnimationFrame(self.timer); self.timer = 0; var py = self.getScrollTop(); var px = self.getScrollLeft(); if (((self.newscrolly-py)*(y-py)<0)||((self.newscrollx-px)*(x-px)<0)) self.cancelScroll(); //inverted movement detection self.newscrolly = y; self.newscrollx = x; if (!self.bouncescroll||!self.rail.visibility) { if (self.newscrolly<0) { self.newscrolly = 0; } else if (self.newscrolly>self.page.maxh) { self.newscrolly = self.page.maxh; } } if (!self.bouncescroll||!self.railh.visibility) { if (self.newscrollx<0) { self.newscrollx = 0; } else if (self.newscrollx>self.page.maxw) { self.newscrollx = self.page.maxw; } } self.dst = {}; self.dst.x = x-px; self.dst.y = y-py; self.dst.px = px; self.dst.py = py; var dst = Math.round(Math.sqrt(Math.pow(self.dst.x,2)+Math.pow(self.dst.y,2))); self.dst.ax = self.dst.x / dst; self.dst.ay = self.dst.y / dst; var pa = 0; var pe = dst; if (self.dst.x==0) { pa = py; pe = y; self.dst.ay = 1; self.dst.py = 0; } else if (self.dst.y==0) { pa = px; pe = x; self.dst.ax = 1; self.dst.px = 0; } var ms = self.getTransitionSpeed(dst); if (spd&&spd<=1) ms*=spd; if (ms>0) { self.bzscroll = (self.bzscroll) ? self.bzscroll.update(pe,ms) : new BezierClass(pa,pe,ms,0,1,0,1); } else { self.bzscroll = false; } if (self.timer) return; if ((py==self.page.maxh&&y>=self.page.maxh)||(px==self.page.maxw&&x>=self.page.maxw)) self.checkContentSize(); var sync = 1; function scrolling() { if (self.cancelAnimationFrame) return true; self.scrollrunning = true; sync = 1-sync; if (sync) return (self.timer = setAnimationFrame(scrolling)||1); var done = 0; var sc = sy = self.getScrollTop(); if (self.dst.ay) { sc = (self.bzscroll) ? self.dst.py + (self.bzscroll.getNow()*self.dst.ay) : self.newscrolly; var dr=sc-sy; if ((dr<0&&sc0&&sc>self.newscrolly)) sc = self.newscrolly; self.setScrollTop(sc); if (sc == self.newscrolly) done=1; } else { done=1; } var scx = sx = self.getScrollLeft(); if (self.dst.ax) { scx = (self.bzscroll) ? self.dst.px + (self.bzscroll.getNow()*self.dst.ax) : self.newscrollx; var dr=scx-sx; if ((dr<0&&scx0&&scx>self.newscrollx)) scx = self.newscrollx; self.setScrollLeft(scx); if (scx == self.newscrollx) done+=1; } else { done+=1; } if (done==2) { self.timer = 0; self.cursorfreezed = false; self.bzscroll = false; self.scrollrunning = false; if (sc<0) sc=0; else if (sc>self.page.maxh) sc=self.page.maxh; if (scx<0) scx=0; else if (scx>self.page.maxw) scx=self.page.maxw; if ((scx!=self.newscrollx)||(sc!=self.newscrolly)) self.doScrollPos(scx,sc); else { if (self.onscrollend) { var info = {"type":"scrollend","current":{"x":sx,"y":sy},"end":{"x":self.newscrollx,"y":self.newscrolly}}; self.onscrollend.call(self,info); } } } else { self.timer = setAnimationFrame(scrolling)||1; } }; self.cancelAnimationFrame=false; self.timer = 1; if (self.onscrollstart&&!self.scrollrunning) { var info = {"type":"scrollstart","current":{"x":px,"y":py},"request":{"x":x,"y":y},"end":{"x":self.newscrollx,"y":self.newscrolly},"speed":ms}; self.onscrollstart.call(self,info); } scrolling(); if ((py==self.page.maxh&&y>=py)||(px==self.page.maxw&&x>=px)) self.checkContentSize(); self.noticeCursor(); }; this.cancelScroll = function() { if (self.timer) clearAnimationFrame(self.timer); self.timer = 0; self.bzscroll = false; self.scrollrunning = false; return self; }; } this.doScrollBy = function(stp,relative) { var ny = 0; if (relative) { ny = Math.floor((self.scroll.y-stp)*self.scrollratio.y) } else { var sy = (self.timer) ? self.newscrolly : self.getScrollTop(true); ny = sy-stp; } if (self.bouncescroll) { var haf = Math.round(self.view.h/2); if (ny<-haf) ny=-haf else if (ny>(self.page.maxh+haf)) ny = (self.page.maxh+haf); } self.cursorfreezed = false; py = self.getScrollTop(true); if (ny<0&&py<=0) return self.noticeCursor(); else if (ny>self.page.maxh&&py>=self.page.maxh) { self.checkContentSize(); return self.noticeCursor(); } self.doScrollTop(ny); }; this.doScrollLeftBy = function(stp,relative) { var nx = 0; if (relative) { nx = Math.floor((self.scroll.x-stp)*self.scrollratio.x) } else { var sx = (self.timer) ? self.newscrollx : self.getScrollLeft(true); nx = sx-stp; } if (self.bouncescroll) { var haf = Math.round(self.view.w/2); if (nx<-haf) nx=-haf else if (nx>(self.page.maxw+haf)) nx = (self.page.maxw+haf); } self.cursorfreezed = false; px = self.getScrollLeft(true); if (nx<0&&px<=0) return self.noticeCursor(); else if (nx>self.page.maxw&&px>=self.page.maxw) return self.noticeCursor(); self.doScrollLeft(nx); }; this.doScrollTo = function(pos,relative) { var ny = (relative) ? Math.round(pos*self.scrollratio.y) : pos; if (ny<0) ny=0 else if (ny>self.page.maxh) ny = self.page.maxh; self.cursorfreezed = false; self.doScrollTop(pos); }; this.checkContentSize = function() { var pg = self.getContentSize(); if ((pg.h!=self.page.h)||(pg.w!=self.page.w)) self.resize(false,pg); }; self.onscroll = function(e) { if (self.rail.drag) return; if (!self.cursorfreezed) { self.synched('scroll',function(){ self.scroll.y = Math.round(self.getScrollTop() * (1/self.scrollratio.y)); if (self.railh) self.scroll.x = Math.round(self.getScrollLeft() * (1/self.scrollratio.x)); self.noticeCursor(); }); } }; self.bind(self.docscroll,"scroll",self.onscroll); this.doZoomIn = function(e) { if (self.zoomactive) return; self.zoomactive = true; self.zoomrestore = { style:{} }; var lst = ['position','top','left','zIndex','backgroundColor','marginTop','marginBottom','marginLeft','marginRight']; var win = self.win[0].style; for(var a in lst) { var pp = lst[a]; self.zoomrestore.style[pp] = (typeof win[pp] != "undefined") ? win[pp] : ''; } self.zoomrestore.style.width = self.win.css('width'); self.zoomrestore.style.height = self.win.css('height'); self.zoomrestore.padding = { w:self.win.outerWidth()-self.win.width(), h:self.win.outerHeight()-self.win.height() }; if (cap.isios4) { self.zoomrestore.scrollTop = $(window).scrollTop(); $(window).scrollTop(0); } self.win.css({ "position":(cap.isios4)?"absolute":"fixed", "top":0, "left":0, "z-index":globalmaxzindex+100, "margin":"0px" }); var bkg = self.win.css("backgroundColor"); if (bkg==""||/transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(bkg)) self.win.css("backgroundColor","#fff"); self.rail.css({"z-index":globalmaxzindex+101}); self.zoom.css({"z-index":globalmaxzindex+102}); self.zoom.css('backgroundPosition','0px -18px'); self.resizeZoom(); if (self.onzoomin) self.onzoomin.call(self); return self.cancelEvent(e); }; this.doZoomOut = function(e) { if (!self.zoomactive) return; self.zoomactive = false; self.win.css("margin",""); self.win.css(self.zoomrestore.style); if (cap.isios4) { $(window).scrollTop(self.zoomrestore.scrollTop); } self.rail.css({"z-index":self.zindex}); self.zoom.css({"z-index":self.zindex}); self.zoomrestore = false; self.zoom.css('backgroundPosition','0px 0px'); self.onResize(); if (self.onzoomout) self.onzoomout.call(self); return self.cancelEvent(e); }; this.doZoom = function(e) { return (self.zoomactive) ? self.doZoomOut(e) : self.doZoomIn(e); }; this.resizeZoom = function() { if (!self.zoomactive) return; var py = self.getScrollTop(); //preserve scrolling position self.win.css({ width:$(window).width()-self.zoomrestore.padding.w+"px", height:$(window).height()-self.zoomrestore.padding.h+"px" }); self.onResize(); self.setScrollTop(Math.min(self.page.maxh,py)); }; this.init(); $.nicescroll.push(this); }; // Inspired by the work of Kin Blas // http://webpro.host.adobe.com/people/jblas/momentum/includes/jquery.momentum.0.7.js var ScrollMomentumClass2D = function(nc) { var self = this; this.nc = nc; this.lastx = 0; this.lasty = 0; this.speedx = 0; this.speedy = 0; this.lasttime = 0; this.steptime = 0; this.snapx = false; this.snapy = false; this.demulx = 0; this.demuly = 0; this.lastscrollx = -1; this.lastscrolly = -1; this.chkx = 0; this.chky = 0; this.timer = 0; this.time = function() { return +new Date();//beautifull hack }; this.reset = function(px,py) { self.stop(); var now = self.time(); self.steptime = 0; self.lasttime = now; self.speedx = 0; self.speedy = 0; self.lastx = px; self.lasty = py; self.lastscrollx = -1; self.lastscrolly = -1; }; this.update = function(px,py) { var now = self.time(); self.steptime = now - self.lasttime; self.lasttime = now; var dy = py - self.lasty; var dx = px - self.lastx; var sy = self.nc.getScrollTop(); var sx = self.nc.getScrollLeft(); var newy = sy + dy; var newx = sx + dx; self.snapx = (newx<0)||(newx>self.nc.page.maxw); self.snapy = (newy<0)||(newy>self.nc.page.maxh); self.speedx = dx; self.speedy = dy; self.lastx = px; self.lasty = py; }; this.stop = function() { self.nc.unsynched("domomentum2d"); if (self.timer) clearTimeout(self.timer); self.timer = 0; self.lastscrollx = -1; self.lastscrolly = -1; }; this.doSnapy = function(nx,ny) { var snap = false; if (ny<0) { ny=0; snap=true; } else if (ny>self.nc.page.maxh) { ny=self.nc.page.maxh; snap=true; } if (nx<0) { nx=0; snap=true; } else if (nx>self.nc.page.maxw) { nx=self.nc.page.maxw; snap=true; } if (snap) self.nc.doScrollPos(nx,ny,self.nc.opt.snapbackspeed); }; this.doMomentum = function(gp) { var t = self.time(); var l = (gp) ? t+gp : self.lasttime; var sl = self.nc.getScrollLeft(); var st = self.nc.getScrollTop(); var pageh = self.nc.page.maxh; var pagew = self.nc.page.maxw; self.speedx = (pagew>0) ? Math.min(60,self.speedx) : 0; self.speedy = (pageh>0) ? Math.min(60,self.speedy) : 0; var chk = l && (t - l) <= 60; if ((st<0)||(st>pageh)||(sl<0)||(sl>pagew)) chk = false; var sy = (self.speedy && chk) ? self.speedy : false; var sx = (self.speedx && chk) ? self.speedx : false; if (sy||sx) { var tm = Math.max(16,self.steptime); //timeout granularity if (tm>50) { // do smooth var xm = tm/50; self.speedx*=xm; self.speedy*=xm; tm = 50; } self.demulxy = 0; self.lastscrollx = self.nc.getScrollLeft(); self.chkx = self.lastscrollx; self.lastscrolly = self.nc.getScrollTop(); self.chky = self.lastscrolly; var nx = self.lastscrollx; var ny = self.lastscrolly; var onscroll = function(){ var df = ((self.time()-t)>600) ? 0.04 : 0.02; if (self.speedx) { nx = Math.floor(self.lastscrollx - (self.speedx*(1-self.demulxy))); self.lastscrollx = nx; if ((nx<0)||(nx>pagew)) df=0.10; } if (self.speedy) { ny = Math.floor(self.lastscrolly - (self.speedy*(1-self.demulxy))); self.lastscrolly = ny; if ((ny<0)||(ny>pageh)) df=0.10; } self.demulxy = Math.min(1,self.demulxy+df); self.nc.synched("domomentum2d",function(){ if (self.speedx) { var scx = self.nc.getScrollLeft(); if (scx!=self.chkx) self.stop(); self.chkx=nx; self.nc.setScrollLeft(nx); } if (self.speedy) { var scy = self.nc.getScrollTop(); if (scy!=self.chky) self.stop(); self.chky=ny; self.nc.setScrollTop(ny); } if(!self.timer) { self.nc.hideCursor(); self.doSnapy(nx,ny); } }); if (self.demulxy<1) { self.timer = setTimeout(onscroll,tm); } else { self.stop(); self.nc.hideCursor(); self.doSnapy(nx,ny); } }; onscroll(); } else { self.doSnapy(self.nc.getScrollLeft(),self.nc.getScrollTop()); } } }; // override jQuery scrollTop var _scrollTop = jQuery.fn.scrollTop; // preserve original function jQuery.cssHooks["pageYOffset"] = { get: function(elem,computed,extra) { var nice = $.data(elem,'__nicescroll')||false; return (nice&&nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(elem); }, set: function(elem,value) { var nice = $.data(elem,'__nicescroll')||false; (nice&&nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call(elem,value); return this; } }; /* $.fx.step["scrollTop"] = function(fx){ $.cssHooks["scrollTop"].set( fx.elem, fx.now + fx.unit ); }; */ jQuery.fn.scrollTop = function(value) { if (typeof value == "undefined") { var nice = (this[0]) ? $.data(this[0],'__nicescroll')||false : false; return (nice&&nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(this); } else { return this.each(function() { var nice = $.data(this,'__nicescroll')||false; (nice&&nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call($(this),value); }); } } // override jQuery scrollLeft var _scrollLeft = jQuery.fn.scrollLeft; // preserve original function $.cssHooks.pageXOffset = { get: function(elem,computed,extra) { var nice = $.data(elem,'__nicescroll')||false; return (nice&&nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(elem); }, set: function(elem,value) { var nice = $.data(elem,'__nicescroll')||false; (nice&&nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call(elem,value); return this; } }; /* $.fx.step["scrollLeft"] = function(fx){ $.cssHooks["scrollLeft"].set( fx.elem, fx.now + fx.unit ); }; */ jQuery.fn.scrollLeft = function(value) { if (typeof value == "undefined") { var nice = (this[0]) ? $.data(this[0],'__nicescroll')||false : false; return (nice&&nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(this); } else { return this.each(function() { var nice = $.data(this,'__nicescroll')||false; (nice&&nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call($(this),value); }); } } var NiceScrollArray = function(doms) { var self = this; this.length = 0; this.name = "nicescrollarray"; this.each = function(fn) { for(var a=0,i=0;aCongratulations, you've reached the end of the internet.",img:"data:image/gif;base64,R0lGODlh3AATAPQeAPDy+MnQ6LW/4N3h8MzT6rjC4sTM5r/I5NHX7N7j8c7U6tvg8OLl8uXo9Ojr9b3G5MfP6Ovu9tPZ7PT1+vX2+tbb7vf4+8/W69jd7rC73vn5/O/x+K243ai02////wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgD/ACwAAAAA3AATAAAF/6AnjmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcEj0BASHLJbDqf0Kh0Sq1ar9isdioItAKGw+MAKYMFhbF63CW438f0mg1R2O8EuXj/aOPtaHx7fn96goR4hmuId4qDdX95c4+RBIGCB4yAjpmQhZN0YGYGXitdZBIVGAsLoq4BBKQDswm1CQRkcG6ytrYKubq8vbfAcMK9v7q7EMO1ycrHvsW6zcTKsczNz8HZw9vG3cjTsMIYqQkCLBwHCgsMDQ4RDAYIqfYSFxDxEfz88/X38Onr16+Bp4ADCco7eC8hQYMAEe57yNCew4IVBU7EGNDiRn8Z831cGLHhSIgdFf9chIeBg7oA7gjaWUWTVQAGE3LqBDCTlc9WOHfm7PkTqNCh54rePDqB6M+lR536hUqs2gVZM+xbrTqtGoWqdy1emValeXKzggYBBB5y1acFNZmEvXAoN2cGfJrTv3bl69Ffj2xZt3L1+/fw3XRVw4sGDGcR0fJhxZsF3KtBTThZxZ8mLMgC3fRatCbYMNFCzwLEqLgE4NsDWs/tvqdezZf13Hvk2A9Szdu2X3pg18N+68xXn7rh1c+PLksI/Dhe6cuO3ow3NfV92bdArTqC2Ebd3A8vjf5QWfH6Bg7Nz17c2fj69+fnq+8N2Lty+fuP78/eV2X13neIcCeBRwxorbZrA1ANoCDGrgoG8RTshahQ9iSKEEzUmYIYfNWViUhheCGJyIP5E4oom7WWjgCeBFAJNv1DVV01MAdJhhjdkplWNzO/5oXI846njjVEIqR2OS2B1pE5PVscajkxhMycqLJghQSwT40PgfAl4GqNSXYdZXJn5gSkmmmmJu1aZYb14V51do+pTOCmA40AqVCIhG5IJ9PvYnhIFOxmdqhpaI6GeHCtpooisuutmg+Eg62KOMKuqoTaXgicQWoIYq6qiklmoqFV0UoeqqrLbq6quwxirrrLTWauutJ4QAACH5BAUKABwALAcABADOAAsAAAX/IPd0D2dyRCoUp/k8gpHOKtseR9yiSmGbuBykler9XLAhkbDavXTL5k2oqFqNOxzUZPU5YYZd1XsD72rZpBjbeh52mSNnMSC8lwblKZGwi+0QfIJ8CncnCoCDgoVnBHmKfByGJimPkIwtiAeBkH6ZHJaKmCeVnKKTHIihg5KNq4uoqmEtcRUtEREMBggtEr4QDrjCuRC8h7/BwxENeicSF8DKy82pyNLMOxzWygzFmdvD2L3P0dze4+Xh1Arkyepi7dfFvvTtLQkZBC0T/FX3CRgCMOBHsJ+EHYQY7OinAGECgQsB+Lu3AOK+CewcWjwxQeJBihtNGHSoQOE+iQ3//4XkwBBhRZMcUS6YSXOAwIL8PGqEaSJCiYt9SNoCmnJPAgUVLChdaoFBURN8MAzl2PQphwQLfDFd6lTowglHve6rKpbjhK7/pG5VinZP1qkiz1rl4+tr2LRwWU64cFEihwEtZgbgR1UiHaMVvxpOSwBA37kzGz9e8G+B5MIEKLutOGEsAH2ATQwYfTmuX8aETWdGPZmiZcccNSzeTCA1Sw0bdiitC7LBWgu8jQr8HRzqgpK6gX88QbrB14z/kF+ELpwB8eVQj/JkqdylAudji/+ts3039vEEfK8Vz2dlvxZKG0CmbkKDBvllRd6fCzDvBLKBDSCeffhRJEFebFk1k/Mv9jVIoIJZSeBggwUaNeB+Qk34IE0cXlihcfRxkOAJFFhwGmKlmWDiakZhUJtnLBpnWWcnKaAZcxI0piFGGLBm1mc90kajSCveeBVWKeYEoU2wqeaQi0PetoE+rr14EpVC7oAbAUHqhYExbn2XHHsVqbcVew9tx8+XJKk5AZsqqdlddGpqAKdbAYBn1pcczmSTdWvdmZ17c1b3FZ99vnTdCRFM8OEcAhLwm1NdXnWcBBSMRWmfkWZqVlsmLIiAp/o1gGV2vpS4lalGYsUOqXrddcKCmK61aZ8SjEpUpVFVoTj4r661Km7kBHjrDyc1RAIQAAIfkEBQoAGwAsBwAEAM4ACwAABf/gtmUCd4goQQgFKj6PYKi0yrrbc8i4ohQt12EHcal+MNSQi8gigdz7iCioaCIvUmZLp8QBzW0EN2vSlCuDtFKaq4RyHzQLEKZNdiQDhRDVooCwkbfm59EAmKi4SGIm+AjIsKjhsqB4mSjT2IOIOUnICeCaB/mZKFNTSRmqVpmJqklSqskq6PfYYCDwYHDC4REQwGCBLGxxIQDsHMwhAIX8bKzcENgSLGF9PU1j3Sy9zX2NrgzQziChLk1BHWxcjf7N046tvN82715czn9Pryz6Ilc4ACj4EBOCZM8KEnAYYADBRKnACAYUMFv1wotIhCEcaJCisqwJFgAUSQGyX/kCSVUUTIdKMwJlyo0oXHlhskwrTJciZHEXsgaqS4s6PJiCAr1uzYU8kBBSgnWFqpoMJMUjGtDmUwkmfVmVypakWhEKvXsS4nhLW5wNjVroJIoc05wSzTr0PtiigpYe4EC2vj4iWrFu5euWIMRBhacaVJhYQBEFjA9jHjyQ0xEABwGceGAZYjY0YBOrRLCxUp29QM+bRkx5s7ZyYgVbTqwwti2ybJ+vLtDYpycyZbYOlptxdx0kV+V7lC5iJAyyRrwYKxAdiz82ng0/jnJFz0i104Ec1Vj9/M6F173vKL/feXv156dw11tlqeMMnv4V5Ap53GmjQQH97nFfg+IFiucfgRX5Z8KAgbUlQ4IULIlghhhdOSB6AgX0IVn8eReghen3NRIBsRgnH4l4LuEidZBjwRpt6NM5WGwoW0KSjCwX6yJSMab2GwwAPDXfaBCtWpluRTQqC5JM5oUZAjUNS+VeOLWpJEQ7VYQANW0INJSZVDFSnZphjSikfmzE5N4EEbQI1QJmnWXCmHulRp2edwDXF43txukenJwvI9xyg9Q26Z3MzGUcBYFEChZh6DVTq34AU8Iflh51Sd+CnKFYQ6mmZkhqfBKfSxZWqA9DZanWjxmhrWwi0qtCrt/43K6WqVjjpmhIqgEGvculaGKklKstAACEAACH5BAUKABwALAcABADOAAsAAAX/ICdyQmaMYyAUqPgIBiHPxNpy79kqRXH8wAPsRmDdXpAWgWdEIYm2llCHqjVHU+jjJkwqBTecwItShMXkEfNWSh8e1NGAcLgpDGlRgk7EJ/6Ae3VKfoF/fDuFhohVeDeCfXkcCQqDVQcQhn+VNDOYmpSWaoqBlUSfmowjEA+iEAEGDRGztAwGCDcXEA60tXEiCrq8vREMEBLIyRLCxMWSHMzExnbRvQ2Sy7vN0zvVtNfU2tLY3rPgLdnDvca4VQS/k3ABwSLQkYAQwT/P309vcI7OvXr94jBQMJ/nskkGA/BQBRLNDncAIAiDcG6LsxAWOLiQzmeURBKWSLCQbv/1F0eDGinJUKR47YY1IEgQASKk7Yc7ACRwZm7mHweRJoz59BJUogisKCUaFMR0x4SlJBVBFTk8pZivTR0K73rN5wqlXEAq5Fy3IYgHbEzQ0nLy4QSoCjXLoom96VOJEeCosK5n4kkFfqXjl94wa+l1gvAcGICbewAOAxY8l/Ky/QhAGz4cUkGxu2HNozhwMGBnCUqUdBg9UuW9eUynqSwLHIBujePef1ZGQZXcM+OFuEBeBhi3OYgLyqcuaxbT9vLkf4SeqyWxSQpKGB2gQpm1KdWbu72rPRzR9Ne2Nu9Kzr/1Jqj0yD/fvqP4aXOt5sW/5qsXXVcv1Nsp8IBUAmgswGF3llGgeU1YVXXKTN1FlhWFXW3gIE+DVChApysACHHo7Q4A35lLichh+ROBmLKAzgYmYEYDAhCgxKGOOMn4WR4kkDaoBBOxJtdNKQxFmg5JIWIBnQc07GaORfUY4AEkdV6jHlCEISSZ5yTXpp1pbGZbkWmcuZmQCaE6iJ0FhjMaDjTMsgZaNEHFRAQVp3bqXnZED1qYcECOz5V6BhSWCoVJQIKuKQi2KFKEkEFAqoAo7uYSmO3jk61wUUMKmknJ4SGimBmAa0qVQBhAAAIfkEBQoAGwAsBwAEAM4ACwAABf/gJm5FmRlEqhJC+bywgK5pO4rHI0D3pii22+Mg6/0Ej96weCMAk7cDkXf7lZTTnrMl7eaYoy10JN0ZFdco0XAuvKI6qkgVFJXYNwjkIBcNBgR8TQoGfRsJCRuCYYQQiI+ICosiCoGOkIiKfSl8mJkHZ4U9kZMbKaI3pKGXmJKrngmug4WwkhA0lrCBWgYFCCMQFwoQDRHGxwwGCBLMzRLEx8iGzMMO0cYNeCMKzBDW19lnF9DXDIY/48Xg093f0Q3s1dcR8OLe8+Y91OTv5wrj7o7B+7VNQqABIoRVCMBggsOHE36kSoCBIcSH3EbFangxogJYFi8CkJhqQciLJEf/LDDJEeJIBT0GsOwYUYJGBS0fjpQAMidGmyVP6sx4Y6VQhzs9VUwkwqaCCh0tmKoFtSMDmBOf9phg4SrVrROuasRQAaxXpVUhdsU6IsECZlvX3kwLUWzRt0BHOLTbNlbZG3vZinArge5Dvn7wbqtQkSYAAgtKmnSsYKVKo2AfW048uaPmG386i4Q8EQMBAIAnfB7xBxBqvapJ9zX9WgRS2YMpnvYMGdPK3aMjt/3dUcNI4blpj7iwkMFWDXDvSmgAlijrt9RTR78+PS6z1uAJZIe93Q8g5zcsWCi/4Y+C8bah5zUv3vv89uft30QP23punGCx5954oBBwnwYaNCDY/wYrsYeggnM9B2Fpf8GG2CEUVWhbWAtGouEGDy7Y4IEJVrbSiXghqGKIo7z1IVcXIkKWWR361QOLWWnIhwERpLaaCCee5iMBGJQmJGyPFTnbkfHVZGRtIGrg5HALEJAZbu39BuUEUmq1JJQIPtZilY5hGeSWsSk52G9XqsmgljdIcABytq13HyIM6RcUA+r1qZ4EBF3WHWB29tBgAzRhEGhig8KmqKFv8SeCeo+mgsF7YFXa1qWSbkDpom/mqR1PmHCqJ3fwNRVXjC7S6CZhFVCQ2lWvZiirhQq42SACt25IK2hv8TprriUV1usGgeka7LFcNmCldMLi6qZMgFLgpw16Cipb7bC1knXsBiEAACH5BAUKABsALAcABADOAAsAAAX/4FZsJPkUmUGsLCEUTywXglFuSg7fW1xAvNWLF6sFFb42C8EZCj24EJd2yoegWsolS0Uu6fmamg8n8YYcLU2bXSiRaXMGvqV6/KAeJAh8VgZqCX+BexCFioWAYgqNi4qAR4ORhRuHY408jAeUhAmYYiuVlpiflqGZa5CWkzc5fKmbbhIpsAoQDRG8vQwQCBLCwxK6vb5qwhfGxxENahvCEA7NzskSy7vNzzzK09W/PNHF1NvX2dXcN8K55cfh69Luveol3vO8zwi4Yhj+AQwmCBw4IYclDAAJDlQggVOChAoLKkgFkSCAHDwWLKhIEOONARsDKryogFPIiAUb/95gJNIiw4wnI778GFPhzBKFOAq8qLJEhQpiNArjMcHCmlTCUDIouTKBhApELSxFWiGiVKY4E2CAekPgUphDu0742nRrVLJZnyrFSqKQ2ohoSYAMW6IoDpNJ4bLdILTnAj8KUF7UeENjAKuDyxIgOuGiOI0EBBMgLNew5AUrDTMGsFixwBIaNCQuAXJB57qNJ2OWm2Aj4skwCQCIyNkhhtMkdsIuodE0AN4LJDRgfLPtn5YDLdBlraAByuUbBgxQwICxMOnYpVOPej074OFdlfc0TqC62OIbpHjV4o+LrieWhfT8JC/I/T6W8oCl29vQ0XjLdBaA3s1RBO7lFvpX8BVoG4O5jTXRQRDuJ6FDTzEWF1/BCZhgbyAKE9qICYLloQYOFtahVRsWYlZ4KQJHlwHS/IYaZ6sZd9tmu5HQm2xi1UaTbzxYwJk/wBF5g5EEYOBZeEfGZmNdFyFZmZIR4jikbLThlh5kUUVJGmRT7sekkziRWUIACABk3T4qCsedgO4xhgGcY7q5pHJ4klBBTQRJ0CeHcoYHHUh6wgfdn9uJdSdMiebGJ0zUPTcoS286FCkrZxnYoYYKWLkBowhQoBeaOlZAgVhLidrXqg2GiqpQpZ4apwSwRtjqrB3muoF9BboaXKmshlqWqsWiGt2wphJkQbAU5hoCACH5BAUKABsALAcABADOAAsAAAX/oGFw2WZuT5oZROsSQnGaKjRvilI893MItlNOJ5v5gDcFrHhKIWcEYu/xFEqNv6B1N62aclysF7fsZYe5aOx2yL5aAUGSaT1oTYMBwQ5VGCAJgYIJCnx1gIOBhXdwiIl7d0p2iYGQUAQBjoOFSQR/lIQHnZ+Ue6OagqYzSqSJi5eTpTxGcjcSChANEbu8DBAIEsHBChe5vL13G7fFuscRDcnKuM3H0La3EA7Oz8kKEsXazr7Cw9/Gztar5uHHvte47MjktznZ2w0G1+D3BgirAqJmJMAQgMGEgwgn5Ei0gKDBhBMALGRYEOJBb5QcWlQo4cbAihZz3GgIMqFEBSM1/4ZEOWPAgpIIJXYU+PIhRG8ja1qU6VHlzZknJNQ6UanCjQkWCIGSUGEjAwVLjc44+DTqUQtPPS5gejUrTa5TJ3g9sWCr1BNUWZI161StiQUDmLYdGfesibQ3XMq1OPYthrwuA2yU2LBs2cBHIypYQPPlYAKFD5cVvNPtW8eVGbdcQADATsiNO4cFAPkvHpedPzc8kUgNGgZ5RNDZG05reoE9s2vSEP79MEGiQGy1qP8LA4ZcdtsJE48ONoLTBtTV0B9LsTnPceoIDBDQvS7W7vfjVY3q3eZ4A339J4eaAmKqU/sV58HvJh2RcnIBsDUw0ABqhBA5aV5V9XUFGiHfVeAiWwoFgJJrIXRH1tEMiDFV4oHoAEGlaWhgIGSGBO2nFomYY3mKjVglidaNYJGJDkWW2xxTfbjCbVaOGNqoX2GloR8ZeTaECS9pthRGJH2g0b3Agbk6hNANtteHD2GJUucfajCQBy5OOTQ25ZgUPvaVVQmbKh9510/qQpwXx3SQdfk8tZJOd5b6JJFplT3ZnmmX3qd5l1eg5q00HrtUkUn0AKaiGjClSAgKLYZcgWXwocGRcCFGCKwSB6ceqphwmYRUFYT/1WKlOdUpipmxW0mlCqHjYkAaeoZlqrqZ4qd+upQKaapn/AmgAegZ8KUtYtFAQQAgAh+QQFCgAbACwHAAQAzgALAAAF/+C2PUcmiCiZGUTrEkKBis8jQEquKwU5HyXIbEPgyX7BYa5wTNmEMwWsSXsqFbEh8DYs9mrgGjdK6GkPY5GOeU6ryz7UFopSQEzygOGhJBjoIgMDBAcBM0V/CYqLCQqFOwobiYyKjn2TlI6GKC2YjJZknouaZAcQlJUHl6eooJwKooobqoewrJSEmyKdt59NhRKFMxLEEA4RyMkMEAjDEhfGycqAG8TQx9IRDRDE3d3R2ctD1RLg0ttKEnbY5wZD3+zJ6M7X2RHi9Oby7u/r9g38UFjTh2xZJBEBMDAboogAgwkQI07IMUORwocSJwCgWDFBAIwZOaJIsOBjRogKJP8wTODw5ESVHVtm3AhzpEeQElOuNDlTZ0ycEUWKWFASqEahGwYUPbnxoAgEdlYSqDBkgoUNClAlIHbSAoOsqCRQnQHxq1axVb06FWFxLIqyaze0Tft1JVqyE+pWXMD1pF6bYl3+HTqAWNW8cRUFzmih0ZAAB2oGKukSAAGGRHWJgLiR6AylBLpuHKKUMlMCngMpDSAa9QIUggZVVvDaJobLeC3XZpvgNgCmtPcuwP3WgmXSq4do0DC6o2/guzcseECtUoO0hmcsGKDgOt7ssBd07wqesAIGZC1YIBa7PQHvb1+SFo+++HrJSQfB33xfav3i5eX3Hnb4CTJgegEq8tH/YQEOcIJzbm2G2EoYRLgBXFpVmFYDcREV4HIcnmUhiGBRouEMJGJGzHIspqgdXxK0yCKHRNXoIX4uorCdTyjkyNtdPWrA4Up82EbAbzMRxxZRR54WXVLDIRmRcag5d2R6ugl3ZXzNhTecchpMhIGVAKAYpgJjjsSklBEd99maZoo535ZvdamjBEpusJyctg3h4X8XqodBMx0tiNeg/oGJaKGABpogS40KSqiaEgBqlQWLUtqoVQnytekEjzo0hHqhRorppOZt2p923M2AAV+oBtpAnnPNoB6HaU6mAAIU+IXmi3j2mtFXuUoHKwXpzVrsjcgGOauKEjQrwq157hitGq2NoWmjh7z6Wmxb0m5w66+2VRAuXN/yFUAIACH5BAUKABsALAcABADOAAsAAAX/4CZuRiaM45MZqBgIRbs9AqTcuFLE7VHLOh7KB5ERdjJaEaU4ClO/lgKWjKKcMiJQ8KgumcieVdQMD8cbBeuAkkC6LYLhOxoQ2PF5Ys9PKPBMen17f0CCg4VSh32JV4t8jSNqEIOEgJKPlkYBlJWRInKdiJdkmQlvKAsLBxdABA4RsbIMBggtEhcQsLKxDBC2TAS6vLENdJLDxMZAubu8vjIbzcQRtMzJz79S08oQEt/guNiyy7fcvMbh4OezdAvGrakLAQwyABsELQkY9BP+//ckyPDD4J9BfAMh1GsBoImMeQUN+lMgUJ9CiRMa5msxoB9Gh/o8GmxYMZXIgxtR/yQ46S/gQAURR0pDwYDfywoyLPip5AdnCwsMFPBU4BPFhKBDi444quCmDKZOfwZ9KEGpCKgcN1jdALSpPqIYsabS+nSqvqplvYqQYAeDPgwKwjaMtiDl0oaqUAyo+3TuWwUAMPpVCfee0cEjVBGQq2ABx7oTWmQk4FglZMGN9fGVDMCuiH2AOVOu/PmyxM630gwM0CCn6q8LjVJ8GXvpa5Uwn95OTC/nNxkda1/dLSK475IjCD6dHbK1ZOa4hXP9DXs5chJ00UpVm5xo2qRpoxptwF2E4/IbJpB/SDz9+q9b1aNfQH08+p4a8uvX8B53fLP+ycAfemjsRUBgp1H20K+BghHgVgt1GXZXZpZ5lt4ECjxYR4ScUWiShEtZqBiIInRGWnERNnjiBglw+JyGnxUmGowsyiiZg189lNtPGACjV2+S9UjbU0JWF6SPvEk3QZEqsZYTk3UAaRSUnznJI5LmESCdBVSyaOWUWLK4I5gDUYVeV1T9l+FZClCAUVA09uSmRHBCKAECFEhW51ht6rnmWBXkaR+NjuHpJ40D3DmnQXt2F+ihZxlqVKOfQRACACH5BAUKABwALAcABADOAAsAAAX/ICdyUCkUo/g8mUG8MCGkKgspeC6j6XEIEBpBUeCNfECaglBcOVfJFK7YQwZHQ6JRZBUqTrSuVEuD3nI45pYjFuWKvjjSkCoRaBUMWxkwBGgJCXspQ36Bh4EEB0oKhoiBgyNLjo8Ki4QElIiWfJqHnISNEI+Ql5J9o6SgkqKkgqYihamPkW6oNBgSfiMMDQkGCBLCwxIQDhHIyQwQCGMKxsnKVyPCF9DREQ3MxMPX0cu4wt7J2uHWx9jlKd3o39MiuefYEcvNkuLt5O8c1ePI2tyELXGQwoGDAQf+iEC2xByDCRAjTlAgIUWCBRgJQ4AQBFXAs0coT40WLIjRxL/47AcHLkxIomRXL0CHPERZkpa4q4iVKiyp0tR/7kwHMkTUBBJR5dOCEBAVcKKtCAyOHpowXk7goABqBZdcvWploABKkpIJI1q5OD2rIWE0R1uTZu1LFwbWL9OlKuWb4c6+o9i3dEgw0RCGDUG9KlRw56gDY2qmCByZBaASi+TACA0TucAaTteCcy0ZuOK3N2vJlx58+LRQyY3Xm0ZsgjZg+oPQLi7dUcNXi0LOJw1pgNtB7XG6CBy+U75SYfPTSQAgZTNUDnQHt67wnbZyvwLgKiMN3oCZB3C76tdewpLFgIP2C88rbi4Y+QT3+8S5USMICZXWj1pkEDeUU3lOYGB3alSoEiMIjgX4WlgNF2EibIwQIXauWXSRg2SAOHIU5IIIMoZkhhWiJaiFVbKo6AQEgQXrTAazO1JhkBrBG3Y2Y6EsUhaGn95hprSN0oWpFE7rhkeaQBchGOEWnwEmc0uKWZj0LeuNV3W4Y2lZHFlQCSRjTIl8uZ+kG5HU/3sRlnTG2ytyadytnD3HrmuRcSn+0h1dycexIK1KCjYaCnjCCVqOFFJTZ5GkUUjESWaUIKU2lgCmAKKQIUjHapXRKE+t2og1VgankNYnohqKJ2CmKplso6GKz7WYCgqxeuyoF8u9IQAgA7",msg:null,msgText:"Loading the next set of posts...",selector:null,speed:"fast",start:t},state:{isDuringAjax:false,isInvalidPage:false,isDestroyed:false,isDone:false,isPaused:false,isBeyondMaxPage:false,currPage:1},debug:false,behavior:t,binder:e(window),nextSelector:"div.navigation a:first",navSelector:"div.navigation",contentSelector:null,extraScrollPx:150,itemSelector:"div.post",animate:false,pathParse:t,dataType:"html",appendCallback:true,bufferPx:40,errorCallback:function(){},infid:0,pixelsFromNavToBottom:t,path:t,prefill:false,maxPage:t};e.infinitescroll.prototype={_binding:function(n){var r=this,i=r.options;i.v="2.0b2.120520";if(!!i.behavior&&this["_binding_"+i.behavior]!==t){this["_binding_"+i.behavior].call(this);return}if(n!=="bind"&&n!=="unbind"){this._debug("Binding value "+n+" not valid");return false}if(n==="unbind"){this.options.binder.unbind("smartscroll.infscr."+r.options.infid)}else{this.options.binder[n]("smartscroll.infscr."+r.options.infid,function(){r.scroll()})}this._debug("Binding",n)},_create:function(r,i){var s=e.extend(true,{},e.infinitescroll.defaults,r);this.options=s;var o=e(window);var u=this;if(!u._validate(r)){return false}var a=e(s.nextSelector).attr("href");if(!a){this._debug("Navigation selector not found");return false}s.path=s.path||this._determinepath(a);s.contentSelector=s.contentSelector||this.element;s.loading.selector=s.loading.selector||s.contentSelector;s.loading.msg=s.loading.msg||e('
Loading...
'+s.loading.msgText+"
");(new Image).src=s.loading.img;if(s.pixelsFromNavToBottom===t){s.pixelsFromNavToBottom=e(document).height()-e(s.navSelector).offset().top;this._debug("pixelsFromNavToBottom: "+s.pixelsFromNavToBottom)}var f=this;s.loading.start=s.loading.start||function(){e(s.navSelector).hide();s.loading.msg.appendTo(s.loading.selector).show(s.loading.speed,e.proxy(function(){this.beginAjax(s)},f))};s.loading.finished=s.loading.finished||function(){if(!s.state.isBeyondMaxPage)s.loading.msg.fadeOut(s.loading.speed)};s.callback=function(n,r,u){if(!!s.behavior&&n["_callback_"+s.behavior]!==t){n["_callback_"+s.behavior].call(e(s.contentSelector)[0],r,u)}if(i){i.call(e(s.contentSelector)[0],r,s,u)}if(s.prefill){o.bind("resize.infinite-scroll",n._prefill)}};if(r.debug){if(Function.prototype.bind&&(typeof console==="object"||typeof console==="function")&&typeof console.log==="object"){["log","info","warn","error","assert","dir","clear","profile","profileEnd"].forEach(function(e){console[e]=this.call(console[e],console)},Function.prototype.bind)}}this._setup();if(s.prefill){this._prefill()}return true},_prefill:function(){function i(){return e(n.options.contentSelector).height()<=r.height()}var n=this;var r=e(window);this._prefill=function(){if(i()){n.scroll()}r.bind("resize.infinite-scroll",function(){if(i()){r.unbind("resize.infinite-scroll");n.scroll()}})};this._prefill()},_debug:function(){if(true!==this.options.debug){return}if(typeof console!=="undefined"&&typeof console.log==="function"){if(Array.prototype.slice.call(arguments).length===1&&typeof Array.prototype.slice.call(arguments)[0]==="string"){console.log(Array.prototype.slice.call(arguments).toString())}else{console.log(Array.prototype.slice.call(arguments))}}else if(!Function.prototype.bind&&typeof console!=="undefined"&&typeof console.log==="object"){Function.prototype.call.call(console.log,console,Array.prototype.slice.call(arguments))}},_determinepath:function(n){var r=this.options;if(!!r.behavior&&this["_determinepath_"+r.behavior]!==t){return this["_determinepath_"+r.behavior].call(this,n)}if(!!r.pathParse){this._debug("pathParse manual");return r.pathParse(n,this.options.state.currPage+1)}else if(n.match(/^(.*?)\b2\b(.*?$)/)){n=n.match(/^(.*?)\b2\b(.*?$)/).slice(1)}else if(n.match(/^(.*?)2(.*?$)/)){if(n.match(/^(.*?page=)2(\/.*|$)/)){n=n.match(/^(.*?page=)2(\/.*|$)/).slice(1);return n}n=n.match(/^(.*?)2(.*?$)/).slice(1)}else{if(n.match(/^(.*?page=)1(\/.*|$)/)){n=n.match(/^(.*?page=)1(\/.*|$)/).slice(1);return n}else{this._debug("Sorry, we couldn't parse your Next (Previous Posts) URL. your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.");r.state.isInvalidPage=true}}this._debug("determinePath",n);return n},_error:function(n){var r=this.options;if(!!r.behavior&&this["_error_"+r.behavior]!==t){this["_error_"+r.behavior].call(this,n);return}if(n!=="destroy"&&n!=="end"){n="unknown"}this._debug("Error",n);if(n==="end"||r.state.isBeyondMaxPage){this._showdonemsg()}r.state.isDone=true;r.state.currPage=1;r.state.isPaused=false;r.state.isBeyondMaxPage=false;this._binding("unbind")},_loadcallback:function(r,i,s){var o=this.options,u=this.options.callback,a=o.state.isDone?"done":!o.appendCallback?"no-append":"append",f;if(!!o.behavior&&this["_loadcallback_"+o.behavior]!==t){this["_loadcallback_"+o.behavior].call(this,r,i);return}switch(a){case"done":this._showdonemsg();return false;case"no-append":if(o.dataType==="html"){i="
"+i+"
";i=e(i).find(o.itemSelector)}if(i.length===0){return this._error("end")}break;case"append":var l=r.children();if(l.length===0){return this._error("end")}f=document.createDocumentFragment();while(r[0].firstChild){f.appendChild(r[0].firstChild)}this._debug("contentSelector",e(o.contentSelector)[0]);e(o.contentSelector)[0].appendChild(f);i=l.get();break}o.loading.finished.call(e(o.contentSelector)[0],o);if(o.animate){var c=e(window).scrollTop()+e(o.loading.msg).height()+o.extraScrollPx+"px";e("html,body").animate({scrollTop:c},800,function(){o.state.isDuringAjax=false})}if(!o.animate){o.state.isDuringAjax=false}u(this,i,s);if(o.prefill){this._prefill()}},_nearbottom:function(){var r=this.options,i=0+e(document).height()-r.binder.scrollTop()-e(window).height();if(!!r.behavior&&this["_nearbottom_"+r.behavior]!==t){return this["_nearbottom_"+r.behavior].call(this)}this._debug("math:",i,r.pixelsFromNavToBottom);return i-r.bufferPx-1&&e(n[r]).length===0){this._debug("Your "+r+" found no elements.");return false}}return true},bind:function(){this._binding("bind")},destroy:function(){this.options.state.isDestroyed=true;this.options.loading.finished();return this._error("destroy")},pause:function(){this._pausing("pause")},resume:function(){this._pausing("resume")},beginAjax:function(r){var i=this,s=r.path,o,u,a,f;r.state.currPage++;if(r.maxPage!==t&&r.state.currPage>r.maxPage){r.state.isBeyondMaxPage=true;this.destroy();return}o=e(r.contentSelector).is("table, tbody")?e(""):e("
");u=typeof s==="function"?s(r.state.currPage):s.(r.state.currPage);i._debug("heading into ajax",u);a=r.dataType==="html"||r.dataType==="json"?r.dataType:"html+callback";if(r.appendCallback&&r.dataType==="html"){a+="+callback"}switch(a){case"html+callback":i._debug("Using HTML via .load() method");o.load(u+" "+r.itemSelector,t,function(t){i._loadcallback(o,t,u)});break;case"html":i._debug("Using "+a.toUpperCase()+" via $.ajax() method");e.ajax({url:u,dataType:r.dataType,complete:function(t,n){f=typeof t.isResolved!=="undefined"?t.isResolved():n==="success"||n==="notmodified";if(f){i._loadcallback(o,t.responseText,u)}else{i._error("end")}}});break;case"json":i._debug("Using "+a.toUpperCase()+" via $.ajax() method");e.ajax({dataType:"json",type:"GET",url:u,success:function(e,n,s){f=typeof s.isResolved!=="undefined"?s.isResolved():n==="success"||n==="notmodified";if(r.appendCallback){if(r.template!==t){var a=r.template(e);o.append(a);if(f){i._loadcallback(o,a)}else{i._error("end")}}else{i._debug("template must be defined.");i._error("end")}}else{if(f){i._loadcallback(o,e,u)}else{i._error("end")}}},error:function(){i._debug("JSON ajax request failed.");i._error("end")}});break}},retrieve:function(r){r=r||null;var i=this,s=i.options;if(!!s.behavior&&this["retrieve_"+s.behavior]!==t){this["retrieve_"+s.behavior].call(this,r);return}if(s.state.isDestroyed){this._debug("Instance is destroyed");return false}s.state.isDuringAjax=true;s.loading.start.call(e(s.contentSelector)[0],s)},scroll:function(){var n=this.options,r=n.state;if(!!n.behavior&&this["scroll_"+n.behavior]!==t){this["scroll_"+n.behavior].call(this);return}if(r.isDuringAjax||r.isInvalidPage||r.isDone||r.isDestroyed||r.isPaused){return}if(!this._nearbottom()){return}this.retrieve()},toggle:function(){this._pausing()},unbind:function(){this._binding("unbind")},update:function(n){if(e.isPlainObject(n)){this.options=e.extend(true,this.options,n)}}};e.fn.infinitescroll=function(n,r){var i=typeof n;switch(i){case"string":var s=Array.prototype.slice.call(arguments,1);this.each(function(){var t=e.data(this,"infinitescroll");if(!t){return false}if(!e.isFunction(t[n])||n.charAt(0)==="_"){return false}t[n].apply(t,s)});break;case"object":this.each(function(){var t=e.data(this,"infinitescroll");if(t){t.update(n)}else{t=new e.infinitescroll(n,r,this);if(!t.failed){e.data(this,"infinitescroll",t)}}});break}return this};var n=e.event,r;n.special.smartscroll={setup:function(){e(this).bind("scroll",n.special.smartscroll.handler)},teardown:function(){e(this).unbind("scroll",n.special.smartscroll.handler)},handler:function(t,n){var i=this,s=arguments;t.type="smartscroll";if(r){clearTimeout(r)}r=setTimeout(function(){e(i).trigger("smartscroll",s)},n==="execAsap"?0:100)}};e.fn.smartscroll=function(e){return e?this.bind("smartscroll",e):this.trigger("smartscroll",["execAsap"])}}); !function(v){var a=!0;v.flexslider=function(p,e){var m=v(p);"undefined"==typeof e.rtl&&"rtl"==v("html").attr("dir")&&(e.rtl=!0),m.vars=v.extend({},v.flexslider.defaults,e);var t,s=m.vars.namespace,f=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=("ontouchstart"in window||f||window.DocumentTouch&&document instanceof DocumentTouch)&&m.vars.touch,l="click touchend MSPointerUp keyup",c="",g="vertical"===m.vars.direction,h=m.vars.reverse,S=0'),1").attr("href","#").text(a),"thumbnails"===m.vars.controlNav&&(e=v("").attr("src",i.attr("data-thumb"))),""!==i.attr("data-thumb-alt")&&e.attr("alt",i.attr("data-thumb-alt")),"thumbnails"!==m.vars.controlNav||!0!==m.vars.thumbCaptions||""!==(i=i.attr("data-thumbcaption"))&&undefined!==i&&(r=v("").addClass(s+"caption").text(i),e.append(r));var r=v("
  • ");e.appendTo(r),r.append("
  • "),m.controlNavScaffold.append(r),a++}(m.controlsContainer?v(m.controlsContainer):m).append(m.controlNavScaffold),u.controlNav.set(),u.controlNav.active(),m.controlNavScaffold.on(l,"a, img",function(e){var t,a;e.preventDefault(),""!==c&&c!==e.type||(t=v(this),a=m.controlNav.index(t),t.hasClass(s+"active")||(m.direction=a>m.currentSlide?"next":"prev",m.flexAnimate(a,m.vars.pauseOnAction))),""===c&&(c=e.type),u.setToClearWatchedEvent()})},setupManual:function(){m.controlNav=m.manualControls,u.controlNav.active(),m.controlNav.on(l,function(e){var t,a;e.preventDefault(),""!==c&&c!==e.type||(t=v(this),a=m.controlNav.index(t),t.hasClass(s+"active")||(a>m.currentSlide?m.direction="next":m.direction="prev",m.flexAnimate(a,m.vars.pauseOnAction))),""===c&&(c=e.type),u.setToClearWatchedEvent()})},set:function(){var e="thumbnails"===m.vars.controlNav?"img":"a";m.controlNav=v("."+s+"control-nav li "+e,m.controlsContainer?m.controlsContainer:m)},active:function(){m.controlNav.removeClass(s+"active").eq(m.animatingTo).addClass(s+"active")},update:function(e,t){1'+m.count+"")):(1===m.pagingCount?m.controlNavScaffold.find("li"):m.controlNav.eq(t).closest("li")).remove(),u.controlNav.set(),1
  • '+m.vars.prevText+'
  • '+m.vars.nextText+"
  • ");m.customDirectionNav?m.directionNav=m.customDirectionNav:m.controlsContainer?(v(m.controlsContainer).append(e),m.directionNav=v("."+s+"direction-nav li a",m.controlsContainer)):(m.append(e),m.directionNav=v("."+s+"direction-nav li a",m)),u.directionNav.update(),m.directionNav.on(l,function(e){var t;e.preventDefault(),""!==c&&c!==e.type||(t=v(this).hasClass(s+"next")?m.getTarget("next"):m.getTarget("prev"),m.flexAnimate(t,m.vars.pauseOnAction)),""===c&&(c=e.type),u.setToClearWatchedEvent()})},update:function(){console.log("updating...");var e=s+"disabled";1===m.pagingCount?m.directionNav.addClass(e).attr("tabindex","-1"):m.vars.animationLoop?m.directionNav.removeClass(e).prop("tabindex","-1"):0===m.animatingTo?m.directionNav.removeClass(e).filter("."+s+"prev").addClass(e).attr("tabindex","-1"):m.animatingTo===m.last?m.directionNav.removeClass(e).filter("."+s+"next").addClass(e).attr("tabindex","-1"):m.directionNav.removeClass(e).prop("tabindex","-1")}},pausePlay:{setup:function(){var e=v('
    ');m.controlsContainer?(m.controlsContainer.append(e),m.pausePlay=v("."+s+"pauseplay a",m.controlsContainer)):(m.append(e),m.pausePlay=v("."+s+"pauseplay a",m)),u.pausePlay.update(m.vars.slideshow?s+"pause":s+"play"),m.pausePlay.on(l,function(e){e.preventDefault(),""!==c&&c!==e.type||(v(this).hasClass(s+"pause")?(m.manualPause=!0,m.manualPlay=!1,m.pause()):(m.manualPause=!1,m.manualPlay=!0,m.play())),""===c&&(c=e.type),u.setToClearWatchedEvent()})},update:function(e){"play"===e?m.pausePlay.removeClass(s+"pause").addClass(s+"play").html(m.vars.playText):m.pausePlay.removeClass(s+"play").addClass(s+"pause").html(m.vars.pauseText)}},touch:function(){var n,i,r,s,o,l,e,c,d,u=!1,t=0,a=0,v=0;f?(p.style.msTouchAction="none",p._gesture=new MSGesture,(p._gesture.target=p).addEventListener("MSPointerDown",function(e){e.stopPropagation(),m.animating?e.preventDefault():(m.pause(),p._gesture.addPointer(e.pointerId),v=0,s=g?m.h:m.w,l=Number(new Date),r=S&&h&&m.animatingTo===m.last?0:S&&h?m.limit-(m.itemW+m.vars.itemMargin)*m.move*m.animatingTo:S&&m.currentSlide===m.last?m.limit:S?(m.itemW+m.vars.itemMargin)*m.move*m.currentSlide:h?(m.last-m.currentSlide+m.cloneOffset)*s:(m.currentSlide+m.cloneOffset)*s)},!1),p._slider=m,p.addEventListener("MSGestureChange",function(e){e.stopPropagation();var t=e.target._slider;if(!t)return;var a=-e.translationX,n=-e.translationY;if(v+=g?n:a,o=(t.vars.rtl?-1:1)*v,u=g?Math.abs(v)s/2)?t.flexAnimate(e,t.vars.pauseOnAction):x||t.flexAnimate(t.currentSlide,t.vars.pauseOnAction,!0))}r=o=i=n=null,v=0},!1)):(e=function(e){m.animating?e.preventDefault():!window.navigator.msPointerEnabled&&1!==e.touches.length||(m.pause(),s=g?m.h:m.w,l=Number(new Date),t=e.touches[0].pageX,a=e.touches[0].pageY,r=S&&h&&m.animatingTo===m.last?0:S&&h?m.limit-(m.itemW+m.vars.itemMargin)*m.move*m.animatingTo:S&&m.currentSlide===m.last?m.limit:S?(m.itemW+m.vars.itemMargin)*m.move*m.currentSlide:h?(m.last-m.currentSlide+m.cloneOffset)*s:(m.currentSlide+m.cloneOffset)*s,n=g?a:t,i=g?t:a,p.addEventListener("touchmove",c,!1),p.addEventListener("touchend",d,!1))},c=function(e){t=e.touches[0].pageX,a=e.touches[0].pageY,o=g?n-a:(m.vars.rtl?-1:1)*(n-t);(!(u=g?Math.abs(o)s/2)?m.flexAnimate(a,m.vars.pauseOnAction):x||m.flexAnimate(m.currentSlide,m.vars.pauseOnAction,!0)),p.removeEventListener("touchend",d,!1),r=o=i=n=null},p.addEventListener("touchstart",e,!1))},resize:function(){!m.animating&&m.is(":visible")&&(S||m.doMath(),x?u.smoothHeight():S?(m.slides.width(m.computedW),m.update(m.pagingCount),m.setProps()):g?(m.viewport.height(m.h),m.setProps(m.h,"setTotal")):(m.vars.smoothHeight&&u.smoothHeight(),m.newSlides.width(m.computedW),m.setProps(m.computedW,"setTotal")))},smoothHeight:function(e){var t;g&&!x||(t=x?m:m.viewport,e?t.animate({height:m.slides.eq(m.animatingTo).innerHeight()},e):t.innerHeight(m.slides.eq(m.animatingTo).innerHeight()))},sync:function(e){var t=v(m.vars.sync).data("flexslider"),a=m.animatingTo;switch(e){case"animate":t.flexAnimate(a,m.vars.pauseOnAction,!1,!0);break;case"play":t.playing||t.asNav||t.play();break;case"pause":t.pause()}},uniqueID:function(e){return e.filter("[id]").add(e.find("[id]")).each(function(){var e=v(this);e.attr("id",e.attr("id")+"_clone")}),e},pauseInvisible:{visProp:null,init:function(){var e=u.pauseInvisible.getHiddenProp();e&&(e=e.replace(/[H|h]idden/,"")+"visibilitychange",document.addEventListener(e,function(){u.pauseInvisible.isHidden()?m.startTimeout?clearTimeout(m.startTimeout):m.pause():!m.started&&0m.currentSlide?"next":"prev"),d&&1===m.pagingCount&&(m.direction=m.currentItemm.limit&&1!==m.visible?m.limit:i):0===m.currentSlide&&e===m.count-1&&m.vars.animationLoop&&"next"!==m.direction?h?(m.count+m.cloneOffset)*r:0:m.currentSlide===m.last&&0===e&&m.vars.animationLoop&&"prev"!==m.direction?h?0:(m.count+1)*r:h?(m.count-1-e+m.cloneOffset)*r:(e+m.cloneOffset)*r,m.setProps(e,"",m.vars.animationSpeed),m.transitions?(m.vars.animationLoop&&m.atEnd||(m.animating=!1,m.currentSlide=m.animatingTo),m.container.off("webkitTransitionEnd transitionend"),m.container.on("webkitTransitionEnd transitionend",function(){clearTimeout(m.ensureAnimationEnd),m.wrapup(r)}),clearTimeout(m.ensureAnimationEnd),m.ensureAnimationEnd=setTimeout(function(){m.wrapup(r)},m.vars.animationSpeed+100)):m.container.animate(m.args,m.vars.animationSpeed,m.vars.easing,function(){m.wrapup(r)})),m.vars.smoothHeight&&u.smoothHeight(m.vars.animationSpeed)}},m.wrapup=function(e){x||S||(0===m.currentSlide&&m.animatingTo===m.last&&m.vars.animationLoop?m.setProps(e,"jumpEnd"):m.currentSlide===m.last&&0===m.animatingTo&&m.vars.animationLoop&&m.setProps(e,"jumpStart")),m.animating=!1,m.currentSlide=m.animatingTo,m.vars.after(m)},m.animateSlides=function(){!m.animating&&a&&m.flexAnimate(m.getTarget("next"))},m.pause=function(){clearInterval(m.animatedSlides),m.animatedSlides=null,m.playing=!1,m.vars.pausePlay&&u.pausePlay.update("play"),m.syncExists&&u.sync("pause")},m.play=function(){m.playing&&clearInterval(m.animatedSlides),m.animatedSlides=m.animatedSlides||setInterval(m.animateSlides,m.vars.slideshowSpeed),m.started=m.playing=!0,m.vars.pausePlay&&u.pausePlay.update("pause"),m.syncExists&&u.sync("play")},m.stop=function(){m.pause(),m.stopped=!0},m.canAdvance=function(e,t){var a=d?m.pagingCount-1:m.last;return!!t||(d&&m.currentItem===m.count-1&&0===e&&"prev"===m.direction||(!d||0!==m.currentItem||e!==m.pagingCount-1||"next"===m.direction)&&((e!==m.currentSlide||d)&&(!!m.vars.animationLoop||(!m.atEnd||0!==m.currentSlide||e!==a||"next"===m.direction)&&(!m.atEnd||m.currentSlide!==a||0!==e||"next"!==m.direction))))},m.getTarget=function(e){return"next"===(m.direction=e)?m.currentSlide===m.last?0:m.currentSlide+1:0===m.currentSlide?m.last:m.currentSlide-1},m.setProps=function(e,t,a){var n,i=(n=e||(m.itemW+m.vars.itemMargin)*m.move*m.animatingTo,function(){if(S)return"setTouch"===t?e:h&&m.animatingTo===m.last?0:h?m.limit-(m.itemW+m.vars.itemMargin)*m.move*m.animatingTo:m.animatingTo===m.last?m.limit:n;switch(t){case"setTotal":return h?(m.count-1-m.currentSlide+m.cloneOffset)*e:(m.currentSlide+m.cloneOffset)*e;case"setTouch":return e;case"jumpEnd":return h?e:m.count*e;case"jumpStart":return h?m.count*e:e;default:return e}}()*(m.vars.rtl?1:-1)+"px");m.transitions&&(i=g?"translate3d(0,"+i+",0)":"translate3d("+parseInt(i)+"px,0,0)",a=a!==undefined?a/1e3+"s":"0s",m.container.css("-"+m.pfx+"-transition-duration",a),m.container.css("transition-duration",a)),m.args[m.prop]=i,!m.transitions&&a!==undefined||m.container.css(m.args),m.container.css("transform",i)},m.setup=function(e){var t,a;x?(m.vars.rtl?m.slides.css({width:"100%","float":"right",marginLeft:"-100%",position:"relative"}):m.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"}),"init"===e&&(o?m.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+m.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(m.currentSlide).css({opacity:1,zIndex:2}):0==m.vars.fadeFirstSlide?m.slides.css({opacity:0,display:"block",zIndex:1}).eq(m.currentSlide).css({zIndex:2}).css({opacity:1}):m.slides.css({opacity:0,display:"block",zIndex:1}).eq(m.currentSlide).css({zIndex:2}).animate({opacity:1},m.vars.animationSpeed,m.vars.easing)),m.vars.smoothHeight&&u.smoothHeight()):("init"===e&&(m.viewport=v('
    ').css({overflow:"hidden",position:"relative"}).appendTo(m).append(m.container),m.cloneCount=0,m.cloneOffset=0,h&&(a=v.makeArray(m.slides).reverse(),m.slides=v(a),m.container.empty().append(m.slides))),m.vars.animationLoop&&!S&&(m.cloneCount=2,m.cloneOffset=1,"init"!==e&&m.container.find(".clone").remove(),m.container.append(u.uniqueID(m.slides.first().clone().addClass("clone")).attr("aria-hidden","true")).prepend(u.uniqueID(m.slides.last().clone().addClass("clone")).attr("aria-hidden","true"))),m.newSlides=v(m.vars.selector,m),t=h?m.count-1-m.currentSlide+m.cloneOffset:m.currentSlide+m.cloneOffset,g&&!S?(m.container.height(200*(m.count+m.cloneCount)+"%").css("position","absolute").width("100%"),setTimeout(function(){m.newSlides.css({display:"block"}),m.doMath(),m.viewport.height(m.h),m.setProps(t*m.h,"init")},"init"===e?100:0)):(m.container.width(200*(m.count+m.cloneCount)+"%"),m.setProps(t*m.computedW,"init"),setTimeout(function(){m.doMath(),m.vars.rtl?m.newSlides.css({width:m.computedW,marginRight:m.computedM,"float":"right",display:"block"}):m.newSlides.css({width:m.computedW,marginRight:m.computedM,"float":"left",display:"block"}),m.vars.smoothHeight&&u.smoothHeight()},"init"===e?100:0))),S||m.slides.removeClass(s+"active-slide").eq(m.currentSlide).addClass(s+"active-slide"),m.vars.init(m)},m.doMath=function(){var e=m.slides.first(),t=m.vars.itemMargin,a=m.vars.minItems,n=m.vars.maxItems;m.w=(m.viewport===undefined?m:m.viewport).width(),m.isFirefox&&(m.w=m.width()),m.h=e.height(),m.boxPadding=e.outerWidth()-e.width(),S?(m.itemT=m.vars.itemWidth+t,m.itemM=t,m.minW=a?a*m.itemT:m.w,m.maxW=n?n*m.itemT-t:m.w,m.itemW=m.minW>m.w?(m.w-t*(a-1))/a:m.maxWm.w?m.w:m.vars.itemWidth,m.visible=Math.floor(m.w/m.itemW),m.move=0m.w?m.itemW*(m.count-1)+t*(m.count-1):(m.itemW+t)*m.count-m.w-t):(m.itemW=m.w,m.itemM=t,m.pagingCount=m.count,m.last=m.count-1),m.computedW=m.itemW-m.boxPadding,m.computedM=m.itemM},m.update=function(e,t){m.doMath(),S||(em.controlNav.length?u.controlNav.update("add"):("remove"===t&&!S||m.pagingCountm.last&&(--m.currentSlide,--m.animatingTo),u.controlNav.update("remove",m.last))),m.vars.directionNav&&u.directionNav.update()},m.addSlide=function(e,t){e=v(e);m.count+=1,m.last=m.count-1,g&&h?t!==undefined?m.slides.eq(m.count-t).after(e):m.container.prepend(e):t!==undefined?m.slides.eq(t).before(e):m.container.append(e),m.update(t,"add"),m.slides=v(m.vars.selector+":not(.clone)",m),m.setup(),m.vars.added(m)},m.removeSlide=function(e){var t=isNaN(e)?m.slides.index(v(e)):e;--m.count,m.last=m.count-1,(isNaN(e)?v(e,m.slides):g&&h?m.slides.eq(m.last):m.slides.eq(e)).remove(),m.doMath(),m.update(t,"remove"),m.slides=v(m.vars.selector+":not(.clone)",m),m.setup(),m.vars.removed(m)},u.init()},v(window).on("blur",function(e){a=!1}).on("focus",function(e){a=!0}),v.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,fadeFirstSlide:!0,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",customDirectionNav:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,isFirefox:!1,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){},rtl:!1},v.fn.flexslider=function(a){if(a===undefined&&(a={}),"object"==typeof a)return this.each(function(){var e=v(this),t=a.selector?a.selector:".slides > li",t=e.find(t);1===t.length&&!1===a.allowOneSlide||0===t.length?(t.fadeIn(400),a.start&&a.start(e)):e.data("flexslider")===undefined&&new v.flexslider(this,a)});var e=v(this).data("flexslider");switch(a){case"play":e.play();break;case"pause":e.pause();break;case"stop":e.stop();break;case"next":e.flexAnimate(e.getTarget("next"),!0);break;case"prev":case"previous":e.flexAnimate(e.getTarget("prev"),!0);break;default:"number"==typeof a&&e.flexAnimate(a,!0)}}}(jQuery); /* * jQuery OwlCarousel v1.3.3 * * Copyright (c) 2013 Bartosz Wojciechowski * http://www.owlgraphic.com/owlcarousel/ * * Licensed under MIT * */ /*JS Lint helpers: */ /*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */ /*jslint nomen: true, continue:true */ if (typeof Object.create !== "function") { Object.create = function (obj) { function F() {} F.prototype = obj; return new F(); }; } (function ($, window, document) { var Carousel = { init : function (options, el) { var base = this; base.$elem = $(el); base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options); base.Options = options; base.loadContent(); }, loadContent : function () { var base = this, url; function getData(data) { var i, content = ""; if (typeof base.options.jsonSuccess === "function") { base.options.jsonSuccess.apply(this, [data]); } else { for (i in data.owl) { if (data.owl.hasOwnProperty(i)) { content += data.owl[i].item; } } base.$elem.html(content); } base.(); } if (typeof base.options.beforeInit === "function") { base.options.beforeInit.apply(this, [base.$elem]); } if (typeof base.options.jsonPath === "string") { url = base.options.jsonPath; $.getJSON(url, getData); } else { base.(); } }, : function () { var base = this; base.$elem.data("owl-originalStyles", base.$elem.attr("style")); base.$elem.data("owl-originalClasses", base.$elem.attr("class")); base.$elem.css({opacity: 0}); base.orignalItems = base.options.items; base.checkBrowser(); base.wrapperWidth = 0; base.checkVisible = null; base.setVars(); }, setVars : function () { var base = this; if (base.$elem.children().length === 0) {return false; } base.baseClass(); base.eventTypes(); base.$Items = base.$elem.children(); base.itemsAmount = base.$Items.length; base.wrapItems(); base.$owlItems = base.$elem.find(".owl-item"); base.$owlWrapper = base.$elem.find(".owl-wrapper"); base.playDirection = "next"; base.prevItem = 0; base.prevArr = [0]; base.currentItem = 0; base.customEvents(); base.onStartup(); }, onStartup : function () { var base = this; base.updateItems(); base.calculateAll(); base.buildControls(); base.updateControls(); base.response(); base.moveEvents(); base.stopOnHover(); base.owlStatus(); if (base.options.transitionStyle !== false) { base.transitionTypes(base.options.transitionStyle); } if (base.options.autoPlay === true) { base.options.autoPlay = 5000; } base.play(); base.$elem.find(".owl-wrapper").css("display", "block"); if (!base.$elem.is(":visible")) { base.watchVisibility(); } else { base.$elem.css("opacity", 1); } base.onstartup = false; base.eachMoveUpdate(); if (typeof base.options.afterInit === "function") { base.options.afterInit.apply(this, [base.$elem]); } }, eachMoveUpdate : function () { var base = this; if (base.options.lazyLoad === true) { base.lazyLoad(); } if (base.options.autoHeight === true) { base.autoHeight(); } base.onVisibleItems(); if (typeof base.options.afterAction === "function") { base.options.afterAction.apply(this, [base.$elem]); } }, updateVars : function () { var base = this; if (typeof base.options.beforeUpdate === "function") { base.options.beforeUpdate.apply(this, [base.$elem]); } base.watchVisibility(); base.updateItems(); base.calculateAll(); base.updatePosition(); base.updateControls(); base.eachMoveUpdate(); if (typeof base.options.afterUpdate === "function") { base.options.afterUpdate.apply(this, [base.$elem]); } }, reload : function () { var base = this; window.setTimeout(function () { base.updateVars(); }, 0); }, watchVisibility : function () { var base = this; if (base.$elem.is(":visible") === false) { base.$elem.css({opacity: 0}); window.clearInterval(base.autoPlayInterval); window.clearInterval(base.checkVisible); } else { return false; } base.checkVisible = window.setInterval(function () { if (base.$elem.is(":visible")) { base.reload(); base.$elem.animate({opacity: 1}, 200); window.clearInterval(base.checkVisible); } }, 500); }, wrapItems : function () { var base = this; base.$Items.wrapAll("
    ").wrap("
    "); base.$elem.find(".owl-wrapper").wrap("
    "); base.wrapperOuter = base.$elem.find(".owl-wrapper-outer"); base.$elem.css("display", "block"); }, baseClass : function () { var base = this, hasBaseClass = base.$elem.hasClass(base.options.baseClass), hasThemeClass = base.$elem.hasClass(base.options.theme); if (!hasBaseClass) { base.$elem.addClass(base.options.baseClass); } if (!hasThemeClass) { base.$elem.addClass(base.options.theme); } }, updateItems : function () { var base = this, width, i; if (base.options.responsive === false) { return false; } if (base.options.singleItem === true) { base.options.items = base.orignalItems = 1; base.options.itemsCustom = false; base.options.itemsDesktop = false; base.options.itemsDesktopSmall = false; base.options.itemsTablet = false; base.options.itemsTabletSmall = false; base.options.itemsMobile = false; return false; } width = $(base.options.responsiveBaseWidth).width(); if (width > (base.options.itemsDesktop[0] || base.orignalItems)) { base.options.items = base.orignalItems; } if (base.options.itemsCustom !== false) { //Reorder array by screen size base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; }); for (i = 0; i < base.options.itemsCustom.length; i += 1) { if (base.options.itemsCustom[i][0] <= width) { base.options.items = base.options.itemsCustom[i][1]; } } } else { if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) { base.options.items = base.options.itemsDesktop[1]; } if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) { base.options.items = base.options.itemsDesktopSmall[1]; } if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) { base.options.items = base.options.itemsTablet[1]; } if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) { base.options.items = base.options.itemsTabletSmall[1]; } if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) { base.options.items = base.options.itemsMobile[1]; } } //if number of items is less than declared if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) { base.options.items = base.itemsAmount; } }, response : function () { var base = this, smallDelay, lastWindowWidth; if (base.options.responsive !== true) { return false; } lastWindowWidth = $(window).width(); base.resizer = function () { if ($(window).width() !== lastWindowWidth) { if (base.options.autoPlay !== false) { window.clearInterval(base.autoPlayInterval); } window.clearTimeout(smallDelay); smallDelay = window.setTimeout(function () { lastWindowWidth = $(window).width(); base.updateVars(); }, base.options.responsiveRefreshRate); } }; $(window).resize(base.resizer); }, updatePosition : function () { var base = this; base.jumpTo(base.currentItem); if (base.options.autoPlay !== false) { base.checkAp(); } }, appendItemsSizes : function () { var base = this, roundPages = 0, lastItem = base.itemsAmount - base.options.items; base.$owlItems.each(function (index) { var $this = $(this); $this .css({"width": base.itemWidth}) .data("owl-item", Number(index)); if (index % base.options.items === 0 || index === lastItem) { if (!(index > lastItem)) { roundPages += 1; } } $this.data("owl-roundPages", roundPages); }); }, appendWrapperSizes : function () { var base = this, width = base.$owlItems.length * base.itemWidth; base.$owlWrapper.css({ "width": width * 2, "left": 0 }); base.appendItemsSizes(); }, calculateAll : function () { var base = this; base.calculateWidth(); base.appendWrapperSizes(); base.loops(); base.max(); }, calculateWidth : function () { var base = this; base.itemWidth = Math.round(base.$elem.width() / base.options.items); }, max : function () { var base = this, maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1; if (base.options.items > base.itemsAmount) { base.maximumItem = 0; maximum = 0; base.maximumPixels = 0; } else { base.maximumItem = base.itemsAmount - base.options.items; base.maximumPixels = maximum; } return maximum; }, min : function () { return 0; }, loops : function () { var base = this, prev = 0, elWidth = 0, i, item, roundPageNum; base.positionsInArray = [0]; base.pagesInArray = []; for (i = 0; i < base.itemsAmount; i += 1) { elWidth += base.itemWidth; base.positionsInArray.push(-elWidth); if (base.options.scrollPerPage === true) { item = $(base.$owlItems[i]); roundPageNum = item.data("owl-roundPages"); if (roundPageNum !== prev) { base.pagesInArray[prev] = base.positionsInArray[i]; prev = roundPageNum; } } } }, buildControls : function () { var base = this; if (base.options.navigation === true || base.options.pagination === true) { base.owlControls = $("
    ").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem); } if (base.options.pagination === true) { base.buildPagination(); } if (base.options.navigation === true) { base.buildButtons(); } }, buildButtons : function () { var base = this, buttonsWrapper = $("
    "); base.owlControls.append(buttonsWrapper); base.buttonPrev = $("
    ", { "class" : "owl-prev", "html" : base.options.navigationText[0] || "" }); base.buttonNext = $("
    ", { "class" : "owl-next", "html" : base.options.navigationText[1] || "" }); buttonsWrapper .append(base.buttonPrev) .append(base.buttonNext); buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) { event.preventDefault(); }); buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) { event.preventDefault(); if ($(this).hasClass("owl-next")) { base.next(); } else { base.prev(); } }); }, buildPagination : function () { var base = this; base.paginationWrapper = $("
    "); base.owlControls.append(base.paginationWrapper); base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) { event.preventDefault(); if (Number($(this).data("owl-page")) !== base.currentItem) { base.goTo(Number($(this).data("owl-page")), true); } }); }, updatePagination : function () { var base = this, counter, lastPage, lastItem, i, paginationButton, paginationButtonInner; if (base.options.pagination === false) { return false; } base.paginationWrapper.html(""); counter = 0; lastPage = base.itemsAmount - base.itemsAmount % base.options.items; for (i = 0; i < base.itemsAmount; i += 1) { if (i % base.options.items === 0) { counter += 1; if (lastPage === i) { lastItem = base.itemsAmount - base.options.items; } paginationButton = $("
    ", { "class" : "owl-page" }); paginationButtonInner = $("", { "text": base.options.paginationNumbers === true ? counter : "", "class": base.options.paginationNumbers === true ? "owl-numbers" : "" }); paginationButton.append(paginationButtonInner); paginationButton.data("owl-page", lastPage === i ? lastItem : i); paginationButton.data("owl-roundPages", counter); base.paginationWrapper.append(paginationButton); } } base.checkPagination(); }, checkPagination : function () { var base = this; if (base.options.pagination === false) { return false; } base.paginationWrapper.find(".owl-page").each(function () { if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) { base.paginationWrapper .find(".owl-page") .removeClass("active"); $(this).addClass("active"); } }); }, checkNavigation : function () { var base = this; if (base.options.navigation === false) { return false; } if (base.options.rewindNav === false) { if (base.currentItem === 0 && base.maximumItem === 0) { base.buttonPrev.addClass("disabled"); base.buttonNext.addClass("disabled"); } else if (base.currentItem === 0 && base.maximumItem !== 0) { base.buttonPrev.addClass("disabled"); base.buttonNext.removeClass("disabled"); } else if (base.currentItem === base.maximumItem) { base.buttonPrev.removeClass("disabled"); base.buttonNext.addClass("disabled"); } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) { base.buttonPrev.removeClass("disabled"); base.buttonNext.removeClass("disabled"); } } }, updateControls : function () { var base = this; base.updatePagination(); base.checkNavigation(); if (base.owlControls) { if (base.options.items >= base.itemsAmount) { base.owlControls.hide(); } else { base.owlControls.show(); } } }, destroyControls : function () { var base = this; if (base.owlControls) { base.owlControls.remove(); } }, next : function (speed) { var base = this; if (base.isTransition) { return false; } base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1; if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) { if (base.options.rewindNav === true) { base.currentItem = 0; speed = "rewind"; } else { base.currentItem = base.maximumItem; return false; } } base.goTo(base.currentItem, speed); }, prev : function (speed) { var base = this; if (base.isTransition) { return false; } if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) { base.currentItem = 0; } else { base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1; } if (base.currentItem < 0) { if (base.options.rewindNav === true) { base.currentItem = base.maximumItem; speed = "rewind"; } else { base.currentItem = 0; return false; } } base.goTo(base.currentItem, speed); }, goTo : function (position, speed, drag) { var base = this, goToPixel; if (base.isTransition) { return false; } if (typeof base.options.beforeMove === "function") { base.options.beforeMove.apply(this, [base.$elem]); } if (position >= base.maximumItem) { position = base.maximumItem; } else if (position <= 0) { position = 0; } base.currentItem = base.owl.currentItem = position; if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.3d === true) { base.swapSpeed(0); if (base.browser.3d === true) { base.transition3d(base.positionsInArray[position]); } else { base.css2slide(base.positionsInArray[position], 1); } base.afterGo(); base.singleItemTransition(); return false; } goToPixel = base.positionsInArray[position]; if (base.browser.3d === true) { base.isCss3Finish = false; if (speed === true) { base.swapSpeed("paginationSpeed"); window.setTimeout(function () { base.isCss3Finish = true; }, base.options.paginationSpeed); } else if (speed === "rewind") { base.swapSpeed(base.options.rewindSpeed); window.setTimeout(function () { base.isCss3Finish = true; }, base.options.rewindSpeed); } else { base.swapSpeed("slideSpeed"); window.setTimeout(function () { base.isCss3Finish = true; }, base.options.slideSpeed); } base.transition3d(goToPixel); } else { if (speed === true) { base.css2slide(goToPixel, base.options.paginationSpeed); } else if (speed === "rewind") { base.css2slide(goToPixel, base.options.rewindSpeed); } else { base.css2slide(goToPixel, base.options.slideSpeed); } } base.afterGo(); }, jumpTo : function (position) { var base = this; if (typeof base.options.beforeMove === "function") { base.options.beforeMove.apply(this, [base.$elem]); } if (position >= base.maximumItem || position === -1) { position = base.maximumItem; } else if (position <= 0) { position = 0; } base.swapSpeed(0); if (base.browser.3d === true) { base.transition3d(base.positionsInArray[position]); } else { base.css2slide(base.positionsInArray[position], 1); } base.currentItem = base.owl.currentItem = position; base.afterGo(); }, afterGo : function () { var base = this; base.prevArr.push(base.currentItem); base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2]; base.prevArr.shift(0); if (base.prevItem !== base.currentItem) { base.checkPagination(); base.checkNavigation(); base.eachMoveUpdate(); if (base.options.autoPlay !== false) { base.checkAp(); } } if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) { base.options.afterMove.apply(this, [base.$elem]); } }, stop : function () { var base = this; base.apStatus = "stop"; window.clearInterval(base.autoPlayInterval); }, checkAp : function () { var base = this; if (base.apStatus !== "stop") { base.play(); } }, play : function () { var base = this; base.apStatus = "play"; if (base.options.autoPlay === false) { return false; } window.clearInterval(base.autoPlayInterval); base.autoPlayInterval = window.setInterval(function () { base.next(true); }, base.options.autoPlay); }, swapSpeed : function (action) { var base = this; if (action === "slideSpeed") { base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed)); } else if (action === "paginationSpeed") { base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed)); } else if (typeof action !== "string") { base.$owlWrapper.css(base.addCssSpeed(action)); } }, addCssSpeed : function (speed) { return { "-webkit-transition": "all " + speed + "ms ease", "-moz-transition": "all " + speed + "ms ease", "-o-transition": "all " + speed + "ms ease", "transition": "all " + speed + "ms ease" }; }, removeTransition : function () { return { "-webkit-transition": "", "-moz-transition": "", "-o-transition": "", "transition": "" }; }, doTranslate : function (pixels) { return { "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)", "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)", "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)", "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)", "transform": "translate3d(" + pixels + "px, 0px,0px)" }; }, transition3d : function (value) { var base = this; base.$owlWrapper.css(base.doTranslate(value)); }, css2move : function (value) { var base = this; base.$owlWrapper.css({"left" : value}); }, css2slide : function (value, speed) { var base = this; base.isCssFinish = false; base.$owlWrapper.stop(true, true).animate({ "left" : value }, { duration : speed || base.options.slideSpeed, complete : function () { base.isCssFinish = true; } }); }, checkBrowser : function () { var base = this, translate3D = "translate3d(0px, 0px, 0px)", tempElem = document.createElement("div"), regex, as, 3d, isTouch; tempElem.style.cssText = " -moz-transform:" + translate3D + "; -ms-transform:" + translate3D + "; -o-transform:" + translate3D + "; -webkit-transform:" + translate3D + "; transform:" + translate3D; regex = /translate3d\(0px, 0px, 0px\)/g; as = tempElem.style.cssText.match(regex); 3d = (as !== null && as.length === 1); isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints; base.browser = { "3d" : 3d, "isTouch" : isTouch }; }, moveEvents : function () { var base = this; if (base.options.mouseDrag !== false || base.options.touchDrag !== false) { base.gestures(); base.disabledEvents(); } }, eventTypes : function () { var base = this, types = ["s", "e", "x"]; base.ev_types = {}; if (base.options.mouseDrag === true && base.options.touchDrag === true) { types = [ "touchstart.owl mousedown.owl", "touchmove.owl mousemove.owl", "touchend.owl touchcancel.owl mouseup.owl" ]; } else if (base.options.mouseDrag === false && base.options.touchDrag === true) { types = [ "touchstart.owl", "touchmove.owl", "touchend.owl touchcancel.owl" ]; } else if (base.options.mouseDrag === true && base.options.touchDrag === false) { types = [ "mousedown.owl", "mousemove.owl", "mouseup.owl" ]; } base.ev_types.start = types[0]; base.ev_types.move = types[1]; base.ev_types.end = types[2]; }, disabledEvents : function () { var base = this; base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); }); base.$elem.on("mousedown.disableTextSelect", function (e) { return $(e.target).is('input, textarea, select, option'); }); }, gestures : function () { /*jslint unparam: true*/ var base = this, locals = { offsetX : 0, offsetY : 0, baseElWidth : 0, relativePos : 0, position: null, minSwipe : null, maxSwipe: null, sliding : null, dargging: null, targetElement : null }; base.isCssFinish = true; function getTouches(event) { if (event.touches !== undefined) { return { x : event.touches[0].pageX, y : event.touches[0].pageY }; } if (event.touches === undefined) { if (event.pageX !== undefined) { return { x : event.pageX, y : event.pageY }; } if (event.pageX === undefined) { return { x : event.clientX, y : event.clientY }; } } } function swapEvents(type) { if (type === "on") { $(document).on(base.ev_types.move, dragMove); $(document).on(base.ev_types.end, dragEnd); } else if (type === "off") { $(document).off(base.ev_types.move); $(document).off(base.ev_types.end); } } function dragStart(event) { var ev = event.originalEvent || event || window.event, position; if (ev.which === 3) { return false; } if (base.itemsAmount <= base.options.items) { return; } if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) { return false; } if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) { return false; } if (base.options.autoPlay !== false) { window.clearInterval(base.autoPlayInterval); } if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) { base.$owlWrapper.addClass("grabbing"); } base.newPosX = 0; base.newRelativeX = 0; $(this).css(base.removeTransition()); position = $(this).position(); locals.relativePos = position.left; locals.offsetX = getTouches(ev).x - position.left; locals.offsetY = getTouches(ev).y - position.top; swapEvents("on"); locals.sliding = false; locals.targetElement = ev.target || ev.srcElement; } function dragMove(event) { var ev = event.originalEvent || event || window.event, minSwipe, maxSwipe; base.newPosX = getTouches(ev).x - locals.offsetX; base.newPosY = getTouches(ev).y - locals.offsetY; base.newRelativeX = base.newPosX - locals.relativePos; if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) { locals.dragging = true; base.options.startDragging.apply(base, [base.$elem]); } if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) { if (ev.preventDefault !== undefined) { ev.preventDefault(); } else { ev.returnValue = false; } locals.sliding = true; } if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) { $(document).off("touchmove.owl"); } minSwipe = function () { return base.newRelativeX / 5; }; maxSwipe = function () { return base.maximumPixels + base.newRelativeX / 5; }; base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe()); if (base.browser.3d === true) { base.transition3d(base.newPosX); } else { base.css2move(base.newPosX); } } function dragEnd(event) { var ev = event.originalEvent || event || window.event, newPosition, handlers, owlStopEvent; ev.target = ev.target || ev.srcElement; locals.dragging = false; if (base.browser.isTouch !== true) { base.$owlWrapper.removeClass("grabbing"); } if (base.newRelativeX < 0) { base.dragDirection = base.owl.dragDirection = "left"; } else { base.dragDirection = base.owl.dragDirection = "right"; } if (base.newRelativeX !== 0) { newPosition = base.getNewPosition(); base.goTo(newPosition, false, "drag"); if (locals.targetElement === ev.target && base.browser.isTouch !== true) { $(ev.target).on("click.disable", function (ev) { ev.stopImmediatePropagation(); ev.stopPropagation(); ev.preventDefault(); $(ev.target).off("click.disable"); }); handlers = $._data(ev.target, "events").click; owlStopEvent = handlers.pop(); handlers.splice(0, 0, owlStopEvent); } } swapEvents("off"); } base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart); }, getNewPosition : function () { var base = this, newPosition = base.closestItem(); if (newPosition > base.maximumItem) { base.currentItem = base.maximumItem; newPosition = base.maximumItem; } else if (base.newPosX >= 0) { newPosition = 0; base.currentItem = 0; } return newPosition; }, closestItem : function () { var base = this, array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray, goal = base.newPosX, closest = null; $.each(array, function (i, v) { if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") { closest = v; if (base.options.scrollPerPage === true) { base.currentItem = $.inArray(closest, base.positionsInArray); } else { base.currentItem = i; } } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") { if (base.options.scrollPerPage === true) { closest = array[i + 1] || array[array.length - 1]; base.currentItem = $.inArray(closest, base.positionsInArray); } else { closest = array[i + 1]; base.currentItem = i + 1; } } }); return base.currentItem; }, moveDirection : function () { var base = this, direction; if (base.newRelativeX < 0) { direction = "right"; base.playDirection = "next"; } else { direction = "left"; base.playDirection = "prev"; } return direction; }, customEvents : function () { /*jslint unparam: true*/ var base = this; base.$elem.on("owl.next", function () { base.next(); }); base.$elem.on("owl.prev", function () { base.prev(); }); base.$elem.on("owl.play", function (event, speed) { base.options.autoPlay = speed; base.play(); base.hoverStatus = "play"; }); base.$elem.on("owl.stop", function () { base.stop(); base.hoverStatus = "stop"; }); base.$elem.on("owl.goTo", function (event, item) { base.goTo(item); }); base.$elem.on("owl.jumpTo", function (event, item) { base.jumpTo(item); }); }, stopOnHover : function () { var base = this; if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) { base.$elem.on("mouseover", function () { base.stop(); }); base.$elem.on("mouseout", function () { if (base.hoverStatus !== "stop") { base.play(); } }); } }, lazyLoad : function () { var base = this, i, $item, itemNumber, $lazyImg, follow; if (base.options.lazyLoad === false) { return false; } for (i = 0; i < base.itemsAmount; i += 1) { $item = $(base.$owlItems[i]); if ($item.data("owl-loaded") === "loaded") { continue; } itemNumber = $item.data("owl-item"); $lazyImg = $item.find(".lazyOwl"); if (typeof $lazyImg.data("src") !== "string") { $item.data("owl-loaded", "loaded"); continue; } if ($item.data("owl-loaded") === undefined) { $lazyImg.hide(); $item.addClass("loading").data("owl-loaded", "checked"); } if (base.options.lazyFollow === true) { follow = itemNumber >= base.currentItem; } else { follow = true; } if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) { base.lazyPreload($item, $lazyImg); } } }, lazyPreload : function ($item, $lazyImg) { var base = this, iterations = 0, isBackgroundImg; if ($lazyImg.prop("tagName") === "DIV") { $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")"); isBackgroundImg = true; } else { $lazyImg[0].src = $lazyImg.data("src"); } function showImage() { $item.data("owl-loaded", "loaded").removeClass("loading"); $lazyImg.removeAttr("data-src"); if (base.options.lazyEffect === "fade") { $lazyImg.fadeIn(400); } else { $lazyImg.show(); } if (typeof base.options.afterLazyLoad === "function") { base.options.afterLazyLoad.apply(this, [base.$elem]); } } function checkLazyImage() { iterations += 1; if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) { showImage(); } else if (iterations <= 100) {//if image loads in less than 10 seconds window.setTimeout(checkLazyImage, 100); } else { showImage(); } } checkLazyImage(); }, autoHeight : function () { var base = this, $currentimg = $(base.$owlItems[base.currentItem]).find("img"), iterations; function addHeight() { var $currentItem = $(base.$owlItems[base.currentItem]).height(); base.wrapperOuter.css("height", $currentItem + "px"); if (!base.wrapperOuter.hasClass("autoHeight")) { window.setTimeout(function () { base.wrapperOuter.addClass("autoHeight"); }, 0); } } function checkImage() { iterations += 1; if (base.completeImg($currentimg.get(0))) { addHeight(); } else if (iterations <= 100) { //if image loads in less than 10 seconds window.setTimeout(checkImage, 100); } else { base.wrapperOuter.css("height", ""); //Else remove height attribute } } if ($currentimg.get(0) !== undefined) { iterations = 0; checkImage(); } else { addHeight(); } }, completeImg : function (img) { var naturalWidthType; if (!img.complete) { return false; } naturalWidthType = typeof img.naturalWidth; if (naturalWidthType !== "undefined" && img.naturalWidth === 0) { return false; } return true; }, onVisibleItems : function () { var base = this, i; if (base.options.addClassActive === true) { base.$owlItems.removeClass("active"); } base.visibleItems = []; for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) { base.visibleItems.push(i); if (base.options.addClassActive === true) { $(base.$owlItems[i]).addClass("active"); } } base.owl.visibleItems = base.visibleItems; }, transitionTypes : function (className) { var base = this; //Currently available: "fade", "backSlide", "goDown", "fadeUp" base.outClass = "owl-" + className + "-out"; base.inClass = "owl-" + className + "-in"; }, singleItemTransition : function () { var base = this, outClass = base.outClass, inClass = base.inClass, $currentItem = base.$owlItems.eq(base.currentItem), $prevItem = base.$owlItems.eq(base.prevItem), prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem], origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2, animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend'; base.isTransition = true; base.$owlWrapper .addClass('owl-origin') .css({ "-webkit-transform-origin" : origin + "px", "-moz-perspective-origin" : origin + "px", "perspective-origin" : origin + "px" }); function transStyles(prevPos) { return { "position" : "relative", "left" : prevPos + "px" }; } $prevItem .css(transStyles(prevPos, 10)) .addClass(outClass) .on(animEnd, function () { base.endPrev = true; $prevItem.off(animEnd); base.clearTransStyle($prevItem, outClass); }); $currentItem .addClass(inClass) .on(animEnd, function () { base.endCurrent = true; $currentItem.off(animEnd); base.clearTransStyle($currentItem, inClass); }); }, clearTransStyle : function (item, classToRemove) { var base = this; item.css({ "position" : "", "left" : "" }).removeClass(classToRemove); if (base.endPrev && base.endCurrent) { base.$owlWrapper.removeClass('owl-origin'); base.endPrev = false; base.endCurrent = false; base.isTransition = false; } }, owlStatus : function () { var base = this; base.owl = { "Options" : base.Options, "baseElement" : base.$elem, "Items" : base.$Items, "owlItems" : base.$owlItems, "currentItem" : base.currentItem, "prevItem" : base.prevItem, "visibleItems" : base.visibleItems, "isTouch" : base.browser.isTouch, "browser" : base.browser, "dragDirection" : base.dragDirection }; }, clearEvents : function () { var base = this; base.$elem.off(".owl owl mousedown.disableTextSelect"); $(document).off(".owl owl"); $(window).off("resize", base.resizer); }, unWrap : function () { var base = this; if (base.$elem.children().length !== 0) { base.$owlWrapper.unwrap(); base.$Items.unwrap().unwrap(); if (base.owlControls) { base.owlControls.remove(); } } base.clearEvents(); base.$elem .attr("style", base.$elem.data("owl-originalStyles") || "") .attr("class", base.$elem.data("owl-originalClasses")); }, destroy : function () { var base = this; base.stop(); window.clearInterval(base.checkVisible); base.unWrap(); base.$elem.removeData(); }, reinit : function (newOptions) { var base = this, options = $.extend({}, base.Options, newOptions); base.unWrap(); base.init(options, base.$elem); }, addItem : function (htmlString, targetPosition) { var base = this, position; if (!htmlString) {return false; } if (base.$elem.children().length === 0) { base.$elem.append(htmlString); base.setVars(); return false; } base.unWrap(); if (targetPosition === undefined || targetPosition === -1) { position = -1; } else { position = targetPosition; } if (position >= base.$Items.length || position === -1) { base.$Items.eq(-1).after(htmlString); } else { base.$Items.eq(position).before(htmlString); } base.setVars(); }, removeItem : function (targetPosition) { var base = this, position; if (base.$elem.children().length === 0) { return false; } if (targetPosition === undefined || targetPosition === -1) { position = -1; } else { position = targetPosition; } base.unWrap(); base.$Items.eq(position).remove(); base.setVars(); } }; $.fn.owlCarousel = function (options) { return this.each(function () { if ($(this).data("owl-init") === true) { return false; } $(this).data("owl-init", true); var carousel = Object.create(Carousel); carousel.init(options, this); $.data(this, "owlCarousel", carousel); }); }; $.fn.owlCarousel.options = { items : 5, itemsCustom : false, itemsDesktop : [1199, 4], itemsDesktopSmall : [979, 3], itemsTablet : [768, 2], itemsTabletSmall : false, itemsMobile : [479, 1], singleItem : false, itemsScaleUp : false, slideSpeed : 200, paginationSpeed : 800, rewindSpeed : 1000, autoPlay : false, stopOnHover : false, navigation : false, navigationText : ["prev", "next"], rewindNav : true, scrollPerPage : false, pagination : true, paginationNumbers : false, responsive : true, responsiveRefreshRate : 200, responsiveBaseWidth : window, baseClass : "owl-carousel", theme : "owl-theme", lazyLoad : false, lazyFollow : true, lazyEffect : "fade", autoHeight : false, jsonPath : false, jsonSuccess : false, dragBeforeAnimFinish : true, mouseDrag : true, touchDrag : true, addClassActive : false, transitionStyle : false, beforeUpdate : false, afterUpdate : false, beforeInit : false, afterInit : false, beforeMove : false, afterMove : false, afterAction : false, startDragging : false, afterLazyLoad: false }; }(jQuery, window, document));