").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
window.njQuery = jQuery.noConflict();
if(tmp) jQuery = tmp;
}
})();
(function($) {
var uaMatch = '',
prefix = '',
html = $('html'),
dir = $(document.documentElement).attr('dir');
if(!dir) dir = 'ltr';
html.addClass('x-'+dir);
window.nextendDir = dir;
if (navigator.userAgent.match(/Windows/))
{
html.addClass('x-win');
}
else if (navigator.userAgent.match(/Mac OS X/))
{
html.addClass('x-mac');
}
else if (navigator.userAgent.match(/X11/))
{
html.addClass('x-x11');
}
if (navigator.userAgent.match(/Chrome/))
{
uaMatch = ' Chrome/';
prefix = 'x-chrome';
}
else if (navigator.userAgent.match(/Safari/))
{
uaMatch = ' Version/';
prefix = 'x-safari';
}
else if (navigator.userAgent.match(/Firefox/))
{
uaMatch = ' Firefox/';
prefix = 'x-firefox';
}
else if (navigator.userAgent.match(/MSIE/))
{
uaMatch = ' MSIE ';
prefix = 'x-msie';
}else if(!!navigator.userAgent.match(/Trident/)){
uaMatch = ' rv:';
prefix = 'x-msie';
}
if (prefix)
{
html.addClass(prefix);
uaMatch = new RegExp(uaMatch + '(\\d+)\.(\\d+)');
var uaMatch = navigator.userAgent.match(uaMatch);
if (uaMatch && uaMatch[1])
{
html.addClass(prefix + '-' + uaMatch[1]);
html.addClass(prefix + '-' + uaMatch[1] + '-' + uaMatch[2]);
}
}
$(window).load(function(){
setTimeout(function(){
html.addClass('x-ready');
}, 500);
});
})(njQuery);/**
* jquery.unique-element-id.js
*
* A simple jQuery plugin to get a unique ID for
* any HTML element
*
* Usage:
* $('some_element_selector').uid();
*
* by Jamie Rumbelow
* http://jamieonsoftware.com
* Copyright (c)2011 Jamie Rumbelow
*
* Licensed under the MIT license (http://www.opensource.org/licenses/MIT)
*/
(function($){
/**
* Generate a new unqiue ID
*/
function generateUniqueId() {
// Return a unique ID
return "nextend-element-" + Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
/**
* Get a unique ID for an element, ensuring that the
* element has an id="" attribute
*/
$.fn.uid = function(){
// We need an element! Check the selector returned something
if (!this.length > 0) {
return generateUniqueId();
}
// Act on only the first element. Also, fetch the element's ID attr
var first_element = this.first();
// No? Generate one!
id_attr = generateUniqueId();
// And set the ID attribute
first_element.attr('id', id_attr);
// Return it
return id_attr;
};
})(njQuery);
;(function($) {
var retina = window.devicePixelRatio > 1;
$.fn.nextendunveil = function(mode) {
if(mode == 'phone') mode = 'mobile';
var images = this,
deferred = $.Deferred(),
loadedimages = [];
function loaded(img){
loadedimages.push(img);
if(loadedimages.length == images.length){
deferred.resolve(images)
}
};
function getSrc(im, mode){
var src;
switch(mode){
case 'mobile':
if(retina){
src = im.data('mobileretina');
if(src) return src;
}
src = im.data('mobile');
if(src) return src;
case 'tablet':
if(retina){
src = im.data('tabletretina');
if(src) return src;
}
src = im.data('tablet');
if(src) return src;
default:
if(retina){
src = im.data('desktopretina');
if(src) return src;
}
return im.data('desktop');
}
}
this.each(function() {
var targetimg = $(this),
source = getSrc(targetimg, mode);
if (!this.getAttribute("old-src") && source) {
var oldsrc = this.getAttribute("src"),
img = $('');
this.setAttribute("old-src", oldsrc);
img[0].setAttribute("src", source);
img.one('load', function() {
targetimg[0].setAttribute("src", img[0].getAttribute("src"));
targetimg.trigger('lazyloaded');
loaded(targetimg);
}).one('error', function() {
targetimg[0].setAttribute("src", oldsrc);
loaded(targetimg);
});
}else{
loaded(targetimg);
}
});
if(!images.length){
deferred.resolve(images)
}
return deferred.promise();
};
})(njQuery);
/*! waitForImages jQuery Plugin - v1.5.0 - 2013-07-20
* https://github.com/alexanderdickson/waitForImages
* Copyright (c) 2013 Alex Dickson; Licensed MIT */
;(function ($) {
// Namespace all events.
var eventNamespace = 'waitForImages';
// CSS properties which contain references to images.
$.waitForImages = {
hasImageProperties: ['backgroundImage', 'listStyleImage', 'borderImage', 'borderCornerImage', 'cursor']
};
// Custom selector to find `img` elements that have a valid `src` attribute and have not already loaded.
$.expr[':'].uncached = function (obj) {
// Ensure we are dealing with an `img` element with a valid `src` attribute.
if (!$(obj).is('img[src!=""]')) {
return false;
}
// Firefox's `complete` property will always be `true` even if the image has not been downloaded.
// Doing it this way works in Firefox.
var img = new Image();
img.src = obj.src;
return !img.complete;
};
$.fn.waitForImages = function (finishedCallback, eachCallback, waitForAll) {
var allImgsLength = 0;
var allImgsLoaded = 0;
// Handle options object.
if ($.isPlainObject(arguments[0])) {
waitForAll = arguments[0].waitForAll;
eachCallback = arguments[0].each;
// This must be last as arguments[0]
// is aliased with finishedCallback.
finishedCallback = arguments[0].finished;
}
// Handle missing callbacks.
finishedCallback = finishedCallback || $.noop;
eachCallback = eachCallback || $.noop;
// Convert waitForAll to Boolean
waitForAll = !! waitForAll;
// Ensure callbacks are functions.
if (!$.isFunction(finishedCallback) || !$.isFunction(eachCallback)) {
throw new TypeError('An invalid callback was supplied.');
}
return this.each(function () {
// Build a list of all imgs, dependent on what images will be considered.
var obj = $(this);
var allImgs = [];
// CSS properties which may contain an image.
var hasImgProperties = $.waitForImages.hasImageProperties || [];
// To match `url()` references.
// Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri
var matchUrl = /url\(\s*(['"]?)(.*?)\1\s*\)/g;
if (waitForAll) {
// Get all elements (including the original), as any one of them could have a background image.
obj.find('*').addBack().each(function () {
var element = $(this);
// If an `img` element, add it. But keep iterating in case it has a background image too.
if (element.is('img:uncached')) {
allImgs.push({
src: element.attr('src'),
element: element[0]
});
}
$.each(hasImgProperties, function (i, property) {
var propertyValue = element.css(property);
var match;
// If it doesn't contain this property, skip.
if (!propertyValue) {
return true;
}
// Get all url() of this element.
while (match = matchUrl.exec(propertyValue)) {
allImgs.push({
src: match[2],
element: element[0]
});
}
});
});
} else {
// For images only, the task is simpler.
obj.find('img:uncached')
.each(function () {
allImgs.push({
src: this.src,
element: this
});
});
}
allImgsLength = allImgs.length;
allImgsLoaded = 0;
// If no images found, don't bother.
if (allImgsLength === 0) {
finishedCallback.call(obj[0]);
}
$.each(allImgs, function (i, img) {
var image = new Image();
// Handle the image loading and error with the same callback.
$(image).on('load.' + eventNamespace + ' error.' + eventNamespace, function (event) {
allImgsLoaded++;
// If an error occurred with loading the image, set the third argument accordingly.
eachCallback.call(img.element, allImgsLoaded, allImgsLength, event.type == 'load');
if (allImgsLoaded == allImgsLength) {
finishedCallback.call(obj[0]);
return false;
}
});
image.src = img.src;
});
});
};
}(njQuery));
/* ============================================================
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
* https://raw.github.com/danro/jquery-easing/master/LICENSE
* ======================================================== */
(function (jQuery) {
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend(jQuery.easing, {
easeInQuad: function(x, t, b, c, d) {
return c * (t /= d) * t + b;
},
easeOutQuad: function(x, t, b, c, d) {
return -c * (t /= d) * (t - 2) + b;
},
easeInOutQuad: function(x, t, b, c, d) {
if ((t /= d / 2) < 1)
return c / 2 * t * t + b;
return -c / 2 * ((--t) * (t - 2) - 1) + b;
},
easeInCubic: function(x, t, b, c, d) {
return c * (t /= d) * t * t + b;
},
easeOutCubic: function(x, t, b, c, d) {
return c * ((t = t / d - 1) * t * t + 1) + b;
},
easeInOutCubic: function(x, t, b, c, d) {
if ((t /= d / 2) < 1)
return c / 2 * t * t * t + b;
return c / 2 * ((t -= 2) * t * t + 2) + b;
},
easeInQuart: function(x, t, b, c, d) {
return c * (t /= d) * t * t * t + b;
},
easeOutQuart: function(x, t, b, c, d) {
return -c * ((t = t / d - 1) * t * t * t - 1) + b;
},
easeInOutQuart: function(x, t, b, c, d) {
if ((t /= d / 2) < 1)
return c / 2 * t * t * t * t + b;
return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
},
easeInQuint: function(x, t, b, c, d) {
return c * (t /= d) * t * t * t * t + b;
},
easeOutQuint: function(x, t, b, c, d) {
return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
},
easeInOutQuint: function(x, t, b, c, d) {
if ((t /= d / 2) < 1)
return c / 2 * t * t * t * t * t + b;
return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
},
easeInSine: function(x, t, b, c, d) {
return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
},
easeOutSine: function(x, t, b, c, d) {
return c * Math.sin(t / d * (Math.PI / 2)) + b;
},
easeInOutSine: function(x, t, b, c, d) {
return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
},
easeInExpo: function(x, t, b, c, d) {
return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
},
easeOutExpo: function(x, t, b, c, d) {
return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
},
easeInOutExpo: function(x, t, b, c, d) {
if (t == 0)
return b;
if (t == d)
return b + c;
if ((t /= d / 2) < 1)
return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function(x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
},
easeOutCirc: function(x, t, b, c, d) {
return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
},
easeInOutCirc: function(x, t, b, c, d) {
if ((t /= d / 2) < 1)
return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
},
easeInElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0)
return b;
if ((t /= d) == 1)
return b + c;
if (!p)
p = d * .3;
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
}
else
var s = p / (2 * Math.PI) * Math.asin(c / a);
return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
},
easeOutElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0)
return b;
if ((t /= d) == 1)
return b + c;
if (!p)
p = d * .3;
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
}
else
var s = p / (2 * Math.PI) * Math.asin(c / a);
return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
},
easeInOutElastic: function(x, t, b, c, d) {
var s = 1.70158;
var p = 0;
var a = c;
if (t == 0)
return b;
if ((t /= d / 2) == 2)
return b + c;
if (!p)
p = d * (.3 * 1.5);
if (a < Math.abs(c)) {
a = c;
var s = p / 4;
}
else
var s = p / (2 * Math.PI) * Math.asin(c / a);
if (t < 1)
return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
},
easeInBack: function(x, t, b, c, d, s) {
if (s == undefined)
s = 1.70158;
return c * (t /= d) * t * ((s + 1) * t - s) + b;
},
easeOutBack: function(x, t, b, c, d, s) {
if (s == undefined)
s = 1.70158;
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
},
easeInOutBack: function(x, t, b, c, d, s) {
if (s == undefined)
s = 1.70158;
if ((t /= d / 2) < 1)
return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
},
easeInBounce: function(x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
},
easeOutBounce: function(x, t, b, c, d) {
if ((t /= d) < (1 / 2.75)) {
return c * (7.5625 * t * t) + b;
} else if (t < (2 / 2.75)) {
return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
} else if (t < (2.5 / 2.75)) {
return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
} else {
return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
}
},
easeInOutBounce: function(x, t, b, c, d) {
if (t < d / 2)
return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
}
});
jQuery.csseasing = jQuery();
jQuery.extend(jQuery.csseasing, {
linear: function() {
return 'linear';
},
easeInQuad: function() {
return 'cubic-bezier(0.550, 0.085, 0.680, 0.530)';
},
easeOutQuad: function() {
return 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
},
easeInOutQuad: function() {
return 'cubic-bezier(0.455, 0.030, 0.515, 0.955)';
},
easeInCubic: function() {
return 'cubic-bezier(0.550, 0.055, 0.675, 0.190)';
},
easeOutCubic: function() {
return 'cubic-bezier(0.215, 0.610, 0.355, 1.000)';
},
easeInOutCubic: function() {
return 'cubic-bezier(0.645, 0.045, 0.355, 1.000)';
},
easeInQuart: function() {
return 'cubic-bezier(0.895, 0.030, 0.685, 0.220)';
},
easeOutQuart: function() {
return 'cubic-bezier(0.165, 0.840, 0.440, 1.000)';
},
easeInOutQuart: function() {
return 'cubic-bezier(0.770, 0.000, 0.175, 1.000)';
},
easeInQuint: function() {
return 'cubic-bezier(0.755, 0.050, 0.855, 0.060)';
},
easeOutQuint: function() {
return 'cubic-bezier(0.230, 1.000, 0.320, 1.000)';
},
easeInOutQuint: function() {
return 'cubic-bezier(0.860, 0.000, 0.070, 1.000)';
},
easeInSine: function() {
return 'cubic-bezier(0.470, 0.000, 0.745, 0.715)';
},
easeOutSine: function() {
return 'cubic-bezier(0.390, 0.575, 0.565, 1.000)';
},
easeInOutSine: function() {
return 'cubic-bezier(0.445, 0.050, 0.550, 0.950)';
},
easeInExpo: function() {
return 'cubic-bezier(0.950, 0.050, 0.795, 0.035)';
},
easeOutExpo: function() {
return 'cubic-bezier(0.190, 1.000, 0.220, 1.000)';
},
easeInOutExpo: function() {
return 'cubic-bezier(1.000, 0.000, 0.000, 1.000)';
},
easeInCirc: function() {
return 'cubic-bezier(0.600, 0.040, 0.980, 0.335)';
},
easeOutCirc: function() {
return 'cubic-bezier(0.075, 0.820, 0.165, 1.000)';
},
easeInOutCirc: function() {
return 'cubic-bezier(0.785, 0.135, 0.150, 0.860)';
},
easeInElastic: function() {
return 'ease-in';
},
easeOutElastic: function() {
return 'ease-out';
},
easeInOutElastic: function() {
return 'ease-in-out';
},
easeInBack: function() {
return 'cubic-bezier(0.600, -0.280, 0.735, 0.045)';
},
easeOutBack: function() {
return 'cubic-bezier(0.175, 0.885, 0.320, 1.275)';
},
easeInOutBack: function() {
return 'cubic-bezier(0.680, -0.550, 0.265, 1.550)';
},
easeInBounce: function() {
return 'ease-in';
},
easeOutBounce: function() {
return 'ease-out';
},
easeInOutBounce: function() {
return 'ease-in-out';
}
});
})(njQuery);/*!
* jQuery Transit - CSS3 transitions and transformations
* (c) 2011-2012 Rico Sta. Cruz
* MIT Licensed.
*
* http://ricostacruz.com/jquery.transit
* http://github.com/rstacruz/jquery.transit
*/
(function ($) {
$.transit = {
version: "0.9.9",
// Map of $.css() keys to values for 'transitionProperty'.
// See https://developer.mozilla.org/en/CSS/CSS_transitions#Properties_that_can_be_animated
propertyMap: {
marginLeft: 'margin',
marginRight: 'margin',
marginBottom: 'margin',
marginTop: 'margin',
paddingLeft: 'padding',
paddingRight: 'padding',
paddingBottom: 'padding',
paddingTop: 'padding'
},
// Will simply transition "instantly" if false
enabled: true,
// Set this to false if you don't want to use the transition end property.
useTransitionEnd: false
};
var div = document.createElement('div');
var support = {};
// Helper function to get the proper vendor property name.
// (`transition` => `WebkitTransition`)
function getVendorPropertyName(prop) {
// Handle unprefixed versions (FF16+, for example)
if (prop in div.style) return prop;
var prefixes = ['Moz', 'Webkit', 'O', 'ms'];
var prop_ = prop.charAt(0).toUpperCase() + prop.substr(1);
if (prop in div.style) {
return prop;
}
for (var i = 0; i < prefixes.length; ++i) {
var vendorProp = prefixes[i] + prop_;
if (vendorProp in div.style) {
return vendorProp;
}
}
}
// Helper function to check if transform3D is supported.
// Should return true for Webkits and Firefox 10+.
function checkTransform3dSupport() {
div.style[support.transform] = '';
div.style[support.transform] = 'rotateY(90deg)';
return div.style[support.transform] !== '';
}
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
// Check for the browser's transitions support.
support.transition = getVendorPropertyName('transition');
support.transitionDelay = getVendorPropertyName('transitionDelay');
support.transitionProperty = getVendorPropertyName('transitionProperty');
support.transform = getVendorPropertyName('transform');
support.transformOrigin = getVendorPropertyName('transformOrigin');
support.transform3d = checkTransform3dSupport();
// Non-working transitionend event names are gonna get spliced out on the first event
var eventNames = [
'transitionend',
'webkitTransitionEnd',
'otransitionend',
'oTransitionEnd'
];
var transitionEnd = support.transitionEnd = eventNames[support.transition] || null;
// Populate jQuery's `$.support` with the vendor prefixes we know.
// As per [jQuery's cssHooks documentation](http://api.jquery.com/jQuery.cssHooks/),
// we set $.support.transition to a string of the actual property name used.
for (var key in support) {
if (support.hasOwnProperty(key) && typeof $.support[key] === 'undefined') {
$.support[key] = support[key];
}
}
// Avoid memory leak in IE.
div = null;
// ## $.cssEase
// List of easing aliases that you can use with `$.fn.transition`.
$.cssEase = {
'_default': 'ease',
'in': 'ease-in',
'out': 'ease-out',
'in-out': 'ease-in-out',
'snap': 'cubic-bezier(0,1,.5,1)',
// Penner equations
'easeOutCubic': 'cubic-bezier(.215,.61,.355,1)',
'easeInOutCubic': 'cubic-bezier(.645,.045,.355,1)',
'easeInCirc': 'cubic-bezier(.6,.04,.98,.335)',
'easeOutCirc': 'cubic-bezier(.075,.82,.165,1)',
'easeInOutCirc': 'cubic-bezier(.785,.135,.15,.86)',
'easeInExpo': 'cubic-bezier(.95,.05,.795,.035)',
'easeOutExpo': 'cubic-bezier(.19,1,.22,1)',
'easeInOutExpo': 'cubic-bezier(1,0,0,1)',
'easeInQuad': 'cubic-bezier(.55,.085,.68,.53)',
'easeOutQuad': 'cubic-bezier(.25,.46,.45,.94)',
'easeInOutQuad': 'cubic-bezier(.455,.03,.515,.955)',
'easeInQuart': 'cubic-bezier(.895,.03,.685,.22)',
'easeOutQuart': 'cubic-bezier(.165,.84,.44,1)',
'easeInOutQuart': 'cubic-bezier(.77,0,.175,1)',
'easeInQuint': 'cubic-bezier(.755,.05,.855,.06)',
'easeOutQuint': 'cubic-bezier(.23,1,.32,1)',
'easeInOutQuint': 'cubic-bezier(.86,0,.07,1)',
'easeInSine': 'cubic-bezier(.47,0,.745,.715)',
'easeOutSine': 'cubic-bezier(.39,.575,.565,1)',
'easeInOutSine': 'cubic-bezier(.445,.05,.55,.95)',
'easeInBack': 'cubic-bezier(.6,-.28,.735,.045)',
'easeOutBack': 'cubic-bezier(.175, .885,.32,1.275)',
'easeInOutBack': 'cubic-bezier(.68,-.55,.265,1.55)'
};
// ## 'transform' CSS hook
// Allows you to use the `transform` property in CSS.
//
// $("#hello").css({ transform: "rotate(90deg)" });
//
// $("#hello").css('transform');
// //=> { rotate: '90deg' }
//
$.cssHooks['transit:transform'] = {
// The getter returns a `Transform` object.
get: function (elem) {
return $(elem).data('transform') || new Transform();
},
// The setter accepts a `Transform` object or a string.
set: function (elem, v) {
var value = v;
if (!(value instanceof Transform)) {
value = new Transform(value);
}
// We've seen the 3D version of Scale() not work in Chrome when the
// element being scaled extends outside of the viewport. Thus, we're
// forcing Chrome to not use the 3d transforms as well. Not sure if
// translate is affectede, but not risking it. Detection code from
// http://davidwalsh.name/detecting-google-chrome-javascript
if (support.transform === 'WebkitTransform' && !isChrome) {
elem.style[support.transform] = value.toString(true);
} else {
elem.style[support.transform] = value.toString();
}
$(elem).data('transform', value);
}
};
// Add a CSS hook for `.css({ transform: '...' })`.
// In jQuery 1.8+, this will intentionally override the default `transform`
// CSS hook so it'll play well with Transit. (see issue #62)
$.cssHooks.transform = {
set: $.cssHooks['transit:transform'].set
};
// jQuery 1.8+ supports prefix-free transitions, so these polyfills will not
// be necessary.
if ($.fn.jquery < "1.8") {
// ## 'transformOrigin' CSS hook
// Allows the use for `transformOrigin` to define where scaling and rotation
// is pivoted.
//
// $("#hello").css({ transformOrigin: '0 0' });
//
$.cssHooks.transformOrigin = {
get: function (elem) {
return elem.style[support.transformOrigin];
},
set: function (elem, value) {
elem.style[support.transformOrigin] = value;
}
};
// ## 'transition' CSS hook
// Allows you to use the `transition` property in CSS.
//
// $("#hello").css({ transition: 'all 0 ease 0' });
//
$.cssHooks.transition = {
get: function (elem) {
return elem.style[support.transition];
},
set: function (elem, value) {
elem.style[support.transition] = value;
}
};
}
// ## Other CSS hooks
// Allows you to rotate, scale and translate.
registerCssHook('scale');
registerCssHook('translate');
registerCssHook('translate3d');
registerCssHook('rotate');
registerCssHook('rotateX');
registerCssHook('rotateY');
registerCssHook('rotateZ');
registerCssHook('rotate3d');
registerCssHook('perspective');
registerCssHook('skewX');
registerCssHook('skewY');
registerCssHook('x', true);
registerCssHook('y', true);
registerCssHook('z', true);
// ## Transform class
// This is the main class of a transformation property that powers
// `$.fn.css({ transform: '...' })`.
//
// This is, in essence, a dictionary object with key/values as `-transform`
// properties.
//
// var t = new Transform("rotate(90) scale(4)");
//
// t.rotate //=> "90deg"
// t.scale //=> "4,4"
//
// Setters are accounted for.
//
// t.set('rotate', 4)
// t.rotate //=> "4deg"
//
// Convert it to a CSS string using the `toString()` and `toString(true)` (for WebKit)
// functions.
//
// t.toString() //=> "rotate(90deg) scale(4,4)"
// t.toString(true) //=> "rotate(90deg) scale3d(4,4,0)" (WebKit version)
//
function Transform(str) {
if (typeof str === 'string') {
this.parse(str);
}
return this;
}
Transform.prototype = {
// ### setFromString()
// Sets a property from a string.
//
// t.setFromString('scale', '2,4');
// // Same as set('scale', '2', '4');
//
setFromString: function (prop, val) {
var args =
(typeof val === 'string') ? val.split(',') :
(val.constructor === Array) ? val :
[ val ];
args.unshift(prop);
Transform.prototype.set.apply(this, args);
},
// ### set()
// Sets a property.
//
// t.set('scale', 2, 4);
//
set: function (prop) {
var args = Array.prototype.slice.apply(arguments, [1]);
if (this.setter[prop]) {
this.setter[prop].apply(this, args);
} else {
this[prop] = args.join(',');
}
},
get: function (prop) {
if (this.getter[prop]) {
return this.getter[prop].apply(this);
} else {
return this[prop] || 0;
}
},
setter: {
// ### rotate
//
// .css({ rotate: 30 })
// .css({ rotate: "30" })
// .css({ rotate: "30deg" })
// .css({ rotate: "30deg" })
//
rotate: function (theta) {
this.rotate = unit(theta, 'deg');
},
rotateX: function (theta) {
this.rotateX = unit(theta, 'deg');
},
rotateY: function (theta) {
this.rotateY = unit(theta, 'deg');
},
rotateZ: function (theta) {
this.rotateZ = unit(theta, 'deg');
},
// ### scale
//
// .css({ scale: 9 }) //=> "scale(9,9)"
// .css({ scale: '3,2' }) //=> "scale(3,2)"
//
scale: function (x, y) {
if (y === undefined) {
y = x;
}
this.scale = x + "," + y;
},
// ### skewX + skewY
skewX: function (x) {
this.skewX = unit(x, 'deg');
},
skewY: function (y) {
this.skewY = unit(y, 'deg');
},
// ### perspectvie
perspective: function (dist) {
this.perspective = unit(dist, 'px');
},
// ### x / y / z
// Translations. Notice how this keeps the other value.
//
// .css({ x: 4 }) //=> "translate(4px, 0)"
// .css({ y: 10 }) //=> "translate(4px, 10px)"
//
x: function (x) {
this.set('translate', x, null, null);
},
y: function (y) {
this.set('translate', null, y, null);
},
z: function(z) {
this.set('translate3d', null, null, z);
},
// ### translate
// Notice how this keeps the other value.
//
// .css({ translate: '2, 5' }) //=> "translate(2px, 5px)"
//
translate: function (x, y) {
this.set('translate3d', x, y, 0);
},
translate3d: function(x, y, z) {
if (this._translateX === undefined) { this._translateX = 0; }
if (this._translateY === undefined) { this._translateY = 0; }
if (this._translateZ === undefined) { this._translateZ = 0; }
if (x !== null && x !== undefined) { this._translateX = unit(x, 'px'); }
if (y !== null && y !== undefined) { this._translateY = unit(y, 'px'); }
if (z !== null && z !== undefined) { this._translateZ = unit(z, 'px'); }
this.translate3d = this._translateX + "," + this._translateY + "," + this._translateZ;
}
},
getter: {
x: function () {
return this._translateX || 0;
},
y: function () {
return this._translateY || 0;
},
z: function () {
return this._translateZ || 0;
},
scale: function () {
var s = (this.scale || "1,1").split(',');
if (s[0]) {
s[0] = parseFloat(s[0]);
}
if (s[1]) {
s[1] = parseFloat(s[1]);
}
// "2.5,2.5" => 2.5
// "2.5,1" => [2.5,1]
return (s[0] === s[1]) ? s[0] : s;
},
rotate3d: function () {
var s = (this.rotate3d || "0,0,0,0deg").split(',');
for (var i = 0; i <= 3; ++i) {
if (s[i]) {
s[i] = parseFloat(s[i]);
}
}
if (s[3]) {
s[3] = unit(s[3], 'deg');
}
return s;
}
},
// ### parse()
// Parses from a string. Called on constructor.
parse: function (str) {
var self = this;
str.replace(/([a-zA-Z0-9]+)\((.*?)\)/g, function (x, prop, val) {
self.setFromString(prop, val);
});
},
// ### toString()
// Converts to a `transition` CSS property string. If `use3d` is given,
// it converts to a `-webkit-transition` CSS property string instead.
toString: function (use3d) {
var re = [];
for (var i in this) {
if (this.hasOwnProperty(i)) {
// Don't use 3D transformations if the browser can't support it.
if ((!support.transform3d) && (
(i === 'rotateX') ||
(i === 'rotateY') ||
(i === 'rotateZ') ||
(i === 'perspective') ||
(i === 'transformOrigin'))) {
continue;
}
if (i[0] !== '_') {
if (use3d && (i === 'scale')) {
re.push(i + "3d(" + this[i] + ",1)");
} else if (use3d && (i === 'translate')) {
re.push(i + "3d(" + this[i] + ")");
} else {
re.push(i + "(" + this[i] + ")");
}
}
}
}
return re.join(" ");
}
};
function callOrQueue(self, queue, fn) {
if (queue === true) {
self.queue(fn);
} else if (queue) {
self.queue(queue, fn);
} else {
fn();
}
}
// ### getProperties(dict)
// Returns properties (for `transition-property`) for dictionary `props`. The
// value of `props` is what you would expect in `$.css(...)`.
function getProperties(props) {
var re = [];
$.each(props, function (key) {
key = $.camelCase(key); // Convert "text-align" => "textAlign"
key = $.transit.propertyMap[key] || $.cssProps[key] || key;
key = uncamel(key); // Convert back to dasherized
if ($.inArray(key, re) === -1) {
re.push(key);
}
});
return re;
}
// ### getTransition()
// Returns the transition string to be used for the `transition` CSS property.
//
// Example:
//
// getTransition({ opacity: 1, rotate: 30 }, 500, 'ease');
// //=> 'opacity 500ms ease, -webkit-transform 500ms ease'
//
function getTransition(properties, duration, easing, delay) {
// Get the CSS properties needed.
var props = getProperties(properties);
// Account for aliases (`in` => `ease-in`).
if ($.cssEase[easing]) {
easing = $.cssEase[easing];
}
// Build the duration/easing/delay attributes for it.
var attribs = '' + toMS(duration) + ' ' + easing;
if (parseInt(delay, 10) > 0) {
attribs += ' ' + toMS(delay);
}
// For more properties, add them this way:
// "margin 200ms ease, padding 200ms ease, ..."
var transitions = [];
$.each(props, function (i, name) {
transitions.push(name + ' ' + attribs);
});
return transitions.join(', ');
}
// ## $.fn.transition
// Works like $.fn.animate(), but uses CSS transitions.
//
// $("...").transition({ opacity: 0.1, scale: 0.3 });
//
// // Specific duration
// $("...").transition({ opacity: 0.1, scale: 0.3 }, 500);
//
// // With duration and easing
// $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in');
//
// // With callback
// $("...").transition({ opacity: 0.1, scale: 0.3 }, function() { ... });
//
// // With everything
// $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in', function() { ... });
//
// // Alternate syntax
// $("...").transition({
// opacity: 0.1,
// duration: 200,
// delay: 40,
// easing: 'in',
// complete: function() { /* ... */ }
// });
//
$.fn.transition = $.fn.transit = function (properties, duration, easing, callback) {
var self = this;
var delay = 0;
var queue = true;
var theseProperties = $.extend(true, {}, properties);
// Account for `.transition(properties, callback)`.
if (typeof duration === 'function') {
callback = duration;
duration = undefined;
}
// Account for `.transition(properties, options)`.
if (typeof duration === 'object') {
easing = duration.easing;
delay = duration.delay || 0;
queue = duration.queue || true;
callback = duration.complete;
duration = duration.duration;
}
// Account for `.transition(properties, duration, callback)`.
if (typeof easing === 'function') {
callback = easing;
easing = undefined;
}
// Alternate syntax.
if (typeof theseProperties.easing !== 'undefined') {
easing = theseProperties.easing;
delete theseProperties.easing;
}
if (typeof theseProperties.duration !== 'undefined') {
duration = theseProperties.duration;
delete theseProperties.duration;
}
if (typeof theseProperties.complete !== 'undefined') {
callback = theseProperties.complete;
delete theseProperties.complete;
}
if (typeof theseProperties.queue !== 'undefined') {
queue = theseProperties.queue;
delete theseProperties.queue;
}
if (typeof theseProperties.delay !== 'undefined') {
delay = theseProperties.delay;
delete theseProperties.delay;
}
// Set defaults. (`400` duration, `ease` easing)
if (typeof duration === 'undefined') {
duration = $.fx.speeds._default;
}
if (typeof easing === 'undefined') {
easing = $.cssEase._default;
}
duration = toMS(duration);
// Build the `transition` property.
var transitionValue = getTransition(theseProperties, duration, easing, delay);
// Compute delay until callback.
// If this becomes 0, don't bother setting the transition property.
//var work = $.transit.enabled && support.transition;
var i = $.transit.enabled ? (parseInt(duration, 10) + parseInt(delay, 10)) : 0;
if(!support.transition && i > 0){
var end = self.data('sstransit');
if(end){
var s = 0,
e = 1;
if(end == 'onAnimateOutEnd'){
s = 1;
e = 0;
}
theseProperties.opacity = s;
self.css(theseProperties);
var fn = function (next) {
self.stop().animate({opacity: e}, {
duration: i,
easing: easing,
complete: function(){
self.data('sstransit', null);
if (callback) {
callback.apply(self);
}
}
});
if (next) {
next();
}
};
callOrQueue(self, queue, fn);
return self;
}
i = 0;
}
// If there's nothing to do...
if (i === 0) {
var fn = function (next) {
self.css(theseProperties);
if (callback) {
callback.apply(self);
}
if (next) {
next();
}
};
callOrQueue(self, queue, fn);
return self;
}
// Save the old transitions of each element so we can restore it later.
var run = function (nextCall, element) {
var bound = false;
var self = $(element);
var oldTransitions = {};
// Prepare the callback.
var cb = function (event) {
if (bound) {
for (var j = bound.length; j > 0; --j) {
self.unbind(bound[j], cb);
if ((eventNames.length > 1) && (bound[j] !== event.type) && (eventNames.indexOf(bound[j]) !== -1)) {
eventNames.splice(eventNames.indexOf(bound[j]), 1);
}
}
}
if (i > 0) {
self.each(function () {
this.style[support.transition] = (oldTransitions[this] || null);
});
}
if (typeof callback === 'function') {
callback.apply(self);
}
if (typeof nextCall === 'function') {
nextCall();
}
};
if ((i > 0) && ($.transit.useTransitionEnd)) {
// Use the 'transitionend' event if it's available.
bound = eventNames;
for (var j = 0; j < eventNames.length; ++j) {
self.bind(eventNames[j], cb);
}
} else {
// Fallback to timers if the 'transitionend' event isn't supported.
var id = window.setTimeout(cb, i + 80);
self.data('transitTimer', id);
}
self.data('transitCallback', cb);
// Apply transitions.
self.each(function () {
if (i > 0) {
this.style[support.transition] = transitionValue;
}
$(this).css(properties);
});
};
// Defer running. This allows the browser to paint any pending CSS it hasn't
// painted yet before doing the transitions.
var deferredRun = function (next) {
this.offsetWidth; // force a repaint
run(next, this);
};
// Use jQuery's fx queue.
callOrQueue(self, queue, deferredRun);
// Chainability.
return this;
};
// ## $.fn.transitionStop
// Works like $.fn.stop( [clearQueue ] [, jumpToEnd ] )
//
$.fn.transitionStop = $.fn.transitStop = function (clearQueue, jumpToEnd) {
this.each(function () {
var self = $(this);
var id = self.data('transitTimer');
clearTimeout(id);
self.data('transitTimer', null);
var properties = this.style[support.transitionProperty];
if (properties) {
properties = properties.replace(/-([a-z])/gi, function(s, group1) {
return group1.toUpperCase();
}).replace(/\s*/g, '').split(',');
var style = window.getComputedStyle(this),
css = {};
for (var i = 0; i < properties.length; i++) {
css[properties[i]] = this.style[properties[i]];
this.style[properties[i]] = style[properties[i]];
}
this.offsetWidth; // force a repaint
this.style[support.transition] = 'none';
if (jumpToEnd) {
for (var i = 0; i < properties.length; i++)
this.style[properties[i]] = css[properties[i]];
var cb = self.data('transitCallback');
if (typeof cb === 'function') cb();
self.data('transitCallback', null);
} else if (clearQueue) {
self.clearQueue();
self.unbind(transitionEnd);
} else {
self.dequeue();
}
;
}
;
});
return this;
};
function registerCssHook(prop, isPixels) {
// For certain properties, the 'px' should not be implied.
if (!isPixels) {
$.cssNumber[prop] = true;
}
$.transit.propertyMap[prop] = support.transform;
$.cssHooks[prop] = {
get: function (elem) {
var t = $(elem).css('transit:transform');
return t.get(prop);
},
set: function (elem, value) {
var t = $(elem).css('transit:transform');
t.setFromString(prop, value);
$(elem).css({ 'transit:transform': t });
}
};
}
// ### uncamel(str)
// Converts a camelcase string to a dasherized string.
// (`marginLeft` => `margin-left`)
function uncamel(str) {
return str.replace(/([A-Z])/g, function (letter) {
return '-' + letter.toLowerCase();
});
}
// ### unit(number, unit)
// Ensures that number `number` has a unit. If no unit is found, assume the
// default is `unit`.
//
// unit(2, 'px') //=> "2px"
// unit("30deg", 'rad') //=> "30deg"
//
function unit(i, units) {
if ((typeof i === "string") && (!i.match(/^[\-0-9\.]+$/))) {
return i;
} else {
return "" + i + units;
}
}
// ### toMS(duration)
// Converts given `duration` to a millisecond string.
//
// toMS('fast') => $.fx.speeds[i] => "200ms"
// toMS('normal') //=> $.fx.speeds._default => "400ms"
// toMS(10) //=> '10ms'
// toMS('100ms') //=> '100ms'
//
function toMS(duration) {
var i = duration;
// Allow string durations like 'fast' and 'slow', without overriding numeric values.
if (typeof i === 'string' && (!i.match(/^[\-0-9\.]+/))) {
i = $.fx.speeds[i] || $.fx.speeds._default;
}
return unit(i, 'ms');
}
// Export some functions for testable-ness.
$.transit.getTransitionValue = getTransition;
})(njQuery);
(function ($, scope, undefined) {
scope.ssAnimation = NClass.extend({
_outplayed: false,
endFN: null,
endFired: true,
init: function (layer, options) {
var _this = this;
this.layer = layer;
this.canvas = $(this.layer).data('slide');
if (!this.canvas)
this.canvas = this.layer;
if (this.layer.animated === undefined)
this.layer.animated = false;
this.options = $.extend({
easingIn: 'linear',
easingOut: 'linear',
intervalIn: 400,
intervalOut: 400,
delayIn: 0,
delayOut: 0,
parallaxIn: 0.45,
parallaxOut: 0.45,
animate: "smart-slider-animate",
animateIn: "smart-slider-animate-in",
animateOut: "smart-slider-animate-out",
endFn: function () {
}
}, options);
},
_initAnimation: function () {
var $layer = this.layer;
$(this.canvas).trigger('incrementanimation');
this.layer.on('ssanimateinstart.ssdefault',function (event) {
event.stopPropagation();
$layer.off('ssanimateinstart.ssdefault');
}).on('ssanimateoutstart.ssdefault',function (event) {
event.stopPropagation();
$layer.off('ssanimateoutstart.ssdefault');
}).on('ssanimateinend.ssdefault',function (event) {
event.stopPropagation();
$layer.off('ssanimateinend.ssdefault');
}).on('ssanimateoutend.ssdefault', function (event) {
event.stopPropagation();
$layer.off('ssanimateoutend.ssdefault');
});
},
onResize: function (ratio) {
},
refreshPosition: function(dim){
},
setHiddenState: function () {
if (!this.layer.animated) {
this._setHiddenState();
}
},
stop: function () {
if (!this.endFired) {
this[this.endFN](true);
this._stop();
this.endFired = 1;
}
},
_stop: function () {
},
_setHiddenState: function () {
},
reset: function () {
},
setInStart: function () {
if (!this.layer.animated) {
this._setInStart();
}
},
_setInStart: function () {
},
outPlayed: function (state) {
if (state === undefined) {
return this._outplayed;
}
this._outplayed = state;
},
setOutStart: function () {
if (!this.layer.animated) {
this._setOutStart();
}
},
_setOutStart: function () {
this.layer.css('display', 'block');
},
animateIn: function () {
if (this._canAnimate()) {
this._initAnimation();
this.layer.trigger('ssanimateinstart');
var out = this.layer.data('motionout');
if (out)
out.outPlayed(false);
this.endFired = 0;
this._animateIn();
return true;
}
return false;
},
onAnimateInEnd: function (forced) {
if (typeof forced == 'undefined') forced = false;
if (!this.endFired) {
this._endAnimate();
var playoutafter = this.layer.data('playoutafter');
if (!forced && playoutafter) {
var motion = this.layer.data('motionout');
motion.animateOut();
motion.outPlayed(true);
} else {
this.layer.trigger('ssanimateinend');
}
this.endFired = 1;
}
},
animateOut: function () {
if (this._canAnimate()) {
this._initAnimation();
this.layer.trigger('ssanimateoutstart');
if (this.outPlayed()) {
var $this = this;
setTimeout(function () {
$this.endFired = 0;
$this.onAnimateOutEnd();
}, 200); // Hack to fire end with some delay if playafterin
} else {
this.endFired = 0;
this._animateOut();
}
return true;
}
return false;
},
onAnimateOutEnd: function (forced) {
if (!this.endFired) {
this._endAnimate();
this.layer.trigger('ssanimateoutend');
this.endFired = 1;
}
},
_canAnimate: function () {
if (this.layer.animated)
return false;
return this.layer.animated = true;
},
_endAnimate: function () {
this.layer.animated = false;
this.options.endFn();
$(this.canvas).trigger('decrementanimation');
}
});
scope.ssAnimationManagerClass = NClass.extend({
init: function () {
this.animations = {};
},
addAnimation: function (name, classdefinition, options) {
this.animations[name] = {
classdefinition: classdefinition,
options: options
};
},
getAnimation: function (name, layer, options) {
if (this.animations[name] === undefined) {
name = 'no';
}
return new this.animations[name].classdefinition(layer, $.extend(this.animations[name].options, options));
}
});
if (scope.ssAnimationManager === undefined)
scope.ssAnimationManager = new scope.ssAnimationManagerClass();
})(njQuery, window);;
(function ($, scope, undefined) {
var methods = {
init: function (options) {
var settings = $.extend({
}, options);
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
if (!data) {
var slider = smartsliderbase($this, settings)
$(this).data('smartslider', {
slider: slider
});
data = $this.data('smartslider');
$this.trigger('inited', [slider]);
}
});
},
onInit: function(fn){
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
if(data){
fn({}, data.slider);
}else{
$this.on('inited', fn);
}
});
},
next: function () {
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
data.slider.next();
});
},
previous: function () {
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
data.slider.previous();
});
},
goto: function (i, reversed) {
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
data.slider.goto(i, reversed);
});
},
startautoplay: function () {
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
data.slider.startautoplay();
});
},
pauseautoplay: function () {
return this.each(function () {
var $this = $(this),
data = $this.data('smartslider');
data.slider.pauseautoplay();
});
}
};
$.fn.extend({
smartslider: function (method) {
this.defaultOptions = {};
var options = $.extend({}, this.defaultOptions, options);
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
}
});
window.smartslider = {};
window.smartslider.motions = {};
window.smartsliderbase = function (el, options) {
var proto = function (el, options) {
var $this = this;
this.$el = el;
this.options = options;
this.canvasList = null;
this.slideAnimateIn = "smart-slider-slide-animate-in";
this.slideAnimateOut = "smart-slider-slide-animate-out";
this.slideActive = "smart-slider-slide-active";
this.mainslider = new scope[options.type](this, el, options);
this.next = function () {
this.mainslider.next();
};
this.previous = function () {
this.mainslider.previous();
};
this.goto = function (i, reversed) {
this.mainslider.changeTo(i, reversed);
};
this.startautoplay = function () {
this.mainslider.reStartAutoPlay();
};
this.pauseautoplay = function () {
this.mainslider.pauseAutoPlay();
};
};
return new proto(el, options);
};
})(njQuery, window);;
(function ($, scope, undefined) {
scope.ssTypeBase = NClass.extend({
$this: null,
$slider: null,
slideList: null,
_parent: null,
_active: -1,
_lastActive: -1,
_animating: false,
_runningAnimations: 0,
lastAvailableWidth: 0,
_ready: false,
_currentmode: 'desktop',
_device: 'desktop',
init: function (parent, $el, options) {
this.options = {
syncAnimations: 1,
translate3d: 1,
mainlayer: true,
playfirstlayer: 0,
mainafterout: 1,
inaftermain: 1,
fadeonscroll: 0,
autoplay: 0,
autoplayConfig: {
duration: 5000,
counter: 0,
autoplayToSlide: 0,
stopautoplay: {
click: 1,
mouseenter: 1,
slideplaying: 1
},
resumeautoplay: {
mouseleave: 0,
slideplayed: 1
}
},
responsive: {
downscale: 0,
upscale: 0
},
controls: {
scroll: 0,
touch: 0,
keyboard: 0
},
blockrightclick: 0,
lazyload: 1,
lazyloadneighbor: 0
};
this.slideDimension = {
w: 0,
h: 0
};
this.ssplay = false;
var _this = this;
this._parent = parent;
$.extend(this.options, options);
this.options.syncAnimations = this.options.mainafterout;
this.$slider = $el;
this.initVariables();
if (this.options.translate3d && nModernizr && nModernizr.csstransforms3d) {
this.$slider.css(nModernizr.prefixed('transform'), 'translate3d(0,0,0)');
this.$slider.css(nModernizr.prefixed('perspective'), '1000');
}
if(this.options.blockrightclick && window.ssadmin !== 1){
this.$slider.bind("contextmenu",function(e){
e.preventDefault();
});
}
if(this.options.lazyload == 1){
this.lazyLoadEnable(false);
}else if(this.options.lazyload == 2){
this.lazyLoadEnable(true);
}
this.id = $el.attr('id');
this.$this = $(this);
if(this.options.randomize) this.randomize();
this.slideList = $('.smart-slider-canvas', $el);
this._afterInitCheck();
},
_afterInitCheck: function(){
if(this.$slider.parent().parent().is(':visible')){
this.afterInit();
}else{
var _this = this;
setTimeout(function(){
_this._afterInitCheck();
}, 500);
}
},
afterInit: function(){
var _this = this;
this.slideDimension.w = this.slideList.width();
this.slideDimension.h = this.slideList.height();
for (var i = 0; i < this.slideList.length; i++) {
var slide = this.slideList[i];
// syncronize layer animations with the slide changing
slide.ssanimation = 0;
this.slideList.eq(i).on('incrementanimation.ssanimation',function () {
this.ssanimation++;
}).on('decrementanimation.ssanimation',function () {
this.ssanimation--;
if (this.ssanimation === 0) {
$(this).trigger('ssanimationsended');
}
}).on('noanimation.ssanimation', function () {
if (this.ssanimation === 0) {
$(this).trigger('ssanimationsended');
}
});
// init layers
slide.layers = new scope.ssLayers(this, slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
mainlayer: this.options.mainlayer
});
slide.layers.changeMode(this._currentmode);
}
this.slidebgList = $('.nextend-slide-bg', this.$slider);
this.slidebgList.width(this.slideDimension.w);
this._active = this.slideList.index($('.' + this._parent.slideActive, this.$slider));
this.sizeInited();
this._bullets = this.$slider.find('.nextend-bullet-container > .nextend-bullet');
this._bullets.removeClass('active');
this._bullets.eq(this._active).addClass('active');
this._bar = this.$slider.find('.nextend-bar-slide');
this._bar.removeClass('active');
this._bar.eq(this._active).addClass('active');
this._thumbnails = window[this.id + '-thumbnail'];
this.changeThumbnail(this._active);
if (window.ssadmin !== 1) {
this._device = this.deviceType();
_this._animating = true;
$(this).on('load.first', function () {
$(this).off('load.first');
this._ready = true;
var show = function(){
_this.$slider.addClass('nextend-loaded');
$('#'+_this.id+'-placeholder').remove();
_this.$slider.trigger('loaded');
_this._animating = false;
if (_this.options.playfirstlayer) {
var canvas = $(_this.slideList[_this._active]);
canvas.on('ssanimationsended.first',function () {
$(this).off('ssanimationsended.first');
}).trigger('ssanimatelayersin');
}
_this.startAutoplay();
};
if(_this.options.fadeonscroll){
var w = $(window),
t = _this.$slider.offset().top+_this.$slider.outerHeight(false)/2;
if(w.scrollTop()+w.height() > t){
show();
}else{
w.on('scroll.'+_this.id, function(){
if(w.scrollTop()+w.height() > t){
w.off('scroll.'+_this.id);
show();
}
});
}
}else{
show();
}
});
if (this.options.responsive.downscale || this.options.responsive.upscale) {
this.storeDefaults();
this.onResize();
$(window).on('resize', function () {
_this.onResize();
});
if(typeof artxJQuery != "undefined" && typeof artxJQuery.fn.on != "undefined"){
artxJQuery(window).on('responsive', function () {
_this.onResize();
});
}
if(typeof jQuery != "undefined" && typeof jQuery.fn.on != "undefined"){
jQuery(window).on('responsive', function () {
_this.onResize();
});
}
if(typeof jQuery.fn.fitText != 'undefined') jQuery(window).trigger('resize');
} else {
this.storeDefaults();
this.onResize(1);
this.load(function () {
$(_this).trigger('load');
});
}
if (!this.options.playfirstlayer) {
this.slideList[this._active].layers.setOutStart();
}
this.initAutoplay();
this.initWidgets();
this.initScroll();
this.initTouch();
this.initKeyboard();
this.initEvents();
} else {
this.storeDefaults();
$(this).trigger('load');
}
},
load: function(fn){
this.$slider.waitForImages(fn);
},
ready: function(fn){
if(this._ready){
fn();
}else{
$(this).on('load.first', fn);
}
},
refreshMode: function(){
var basedon = this.options.responsive.basedon,
screenwidth = window.innerWidth,
mode = 'desktop';
if(basedon == 'screen' || basedon == 'combined'){
if(screenwidth < this.options.responsive.screenwidth.phone){
mode = 'phone';
}else if(screenwidth < this.options.responsive.screenwidth.tablet){
mode = 'tablet';
}
}
if(basedon == 'combined') basedon = 'device';
if(basedon == 'device'){
if(this._device == 'mobile'){
mode = 'phone';
}else if(this._device == 'tablet'){
mode = 'tablet';
}
}
if(this._currentmode != mode){
this.$slider.addClass('nextend-'+mode).removeClass('nextend-'+this._currentmode);
this._currentmode = mode;
for (var i = 0; i < this.slideList.length; i++) {
var slide = this.slideList[i];
slide.layers.changeMode(mode);
}
return true;
}
return false;
},
sizeInited: function(){
},
storeDefaults: function () {
this.variablesRefreshed();
},
onResize: function () {
var _this = this;
this.load(function () {
$(_this).trigger('load');
});
},
initVariables: function(){
this.variables = {};
this.variableEls = {
top: this.$slider.find('[data-sstop]'),
right: this.$slider.find('[data-ssright]'),
bottom: this.$slider.find('[data-ssbottom]'),
left: this.$slider.find('[data-ssleft]'),
width: this.$slider.find('[data-sswidth]'),
height: this.$slider.find('[data-ssheight]')
};
this.widgets = {
previous: this.$slider.find('.nextend-arrow-previous'),
next: this.$slider.find('.nextend-arrow-next'),
bullet: this.$slider.find('.nextend-widget-bullet'),
autoplay: this.$slider.find('.nextend-autoplay-button'),
indicator: this.$slider.find('.nextend-indicator'),
bar: this.$slider.find('.nextend-bar'),
thumbnail: this.$slider.find('.nextend-thumbnail-container'),
shadow: this.$slider.find('.nextend-shadow'),
html: this.$slider.find('.nextend-widget-html')
};
},
variablesRefreshed: function(){
for (var key in this.widgets) {
var el = this.widgets[key],
visible = el.is(":visible");
this.variables[key+'width'] = visible ? el.outerWidth(false) : 0;
this.variables[key+'height'] = visible ? el.outerHeight(false) : 0;
}
for (var key in this.variables) {
eval("var " + key + " = " + this.variables[key] + "");
}
for (var k in this.variableEls) {
for(var i = 0; i < this.variableEls[k].length;i++){
var el = this.variableEls[k].eq(i);
try{
el.css(k, eval(el.data('ss'+k))+'px');
}catch(e){
alert('Error in widget(#'+el.attr('id')+') position variable: '+e.message);
}
}
}
},
initWidgets: function () {
var timeout = null,
block = false,
widgets = this.$slider.find('.nextend-widget-hover');
if (widgets.length > 0) {
this.$slider.on('mouseenter touchstart', function (e) {
if(block) return;
var slider = $(this);
if (timeout) clearTimeout(timeout);
widgets.css('visibility', 'visible');
if(e.type == 'touchstart'){
block = true;
setTimeout(function () {
block = false;
}, 1000);
}else{
setTimeout(function () {
slider.addClass('nextend-widget-hover-show');
}, 50);
}
}).on('mouseleave', function () {
var slide = this;
if (timeout) clearTimeout(timeout);
timeout = setTimeout(function () {
$(slide).removeClass('nextend-widget-hover-show');
timeout = setTimeout(function () {
widgets.css('visibility', 'hidden');
}, 400);
}, 500);
});
}
},
initScroll: function () {
if (this.options.controls.scroll == 0) return;
var _this = this;
this.$slider.on('mousewheel', function (e, delta, deltaX, deltaY) {
if (delta < 0) {
_this.next();
} else {
_this.previous();
}
e.preventDefault();
});
},
initTouch: function () {
if (this.options.controls.touch == '0') return;
var _this = this;
var mode = this.options.controls.touch;
var delayBetween = 500,
last = 0;
if(typeof jQuery != 'undefined' && typeof jQuery.UIkit != 'undefined'){
var el = this.$slider.find('> div').eq(0);
if (mode == 'horizontal') {
el.on('swipeRight', function(){
_this.previous();
}).on('swipeLeft', function(){
_this.next();
});
} else if (mode == 'vertical') {
el.on('swipeDown', function(){
_this.previous();
}).on('swipeUp', function(){
_this.next();
});
}
el.on('tap', function(e){
var target = e.target;
var prevent = false;
var a = null;
if(target.tagName == 'A') a = $(target);
else a = $(target).closest('a');
if(a.length){
window.open(a.attr('href'),a.attr('target'));
prevent = true;
}
var accordion = null;
if(!prevent){
accordion = $(target).closest('.accordion-vertical-title, .accordion-horizontal-title');
if(accordion.length){
accordion.trigger('click');
prevent = true;
}
}
if(!prevent){
var act = _this.slideList.eq(_this._active).trigger('click');
if(typeof act.attr("onclick") != 'undefined') prevent = true;
}
if(prevent){
event.preventDefault();
event.stopPropagation();
}
});
}else{
this.$slider.find('> div').eq(0).swipe({
tap: function(event, target) {
var prevent = false;
var a = null;
if(target.tagName == 'A') a = $(target);
else a = $(target).closest('a');
if(a.length){
window.open(a.attr('href'),a.attr('target'));
prevent = true;
}
var accordion = null;
if(!prevent){
accordion = $(target).closest('.accordion-vertical-title, .accordion-horizontal-title');
if(accordion.length){
accordion.trigger('click');
prevent = true;
}
}
if(!prevent){
var act = _this.slideList.eq(_this._active).trigger('click');
if(typeof act.attr("onclick") != 'undefined') prevent = true;
}
if(prevent){
event.preventDefault();
event.stopPropagation();
}
},
swipe: function (event, direction, distance, duration, fingerCount) {
var c = Date.now();
if(last < c - delayBetween){
if (mode == 'horizontal') {
if (direction == 'right') {
_this.previous();
} else if (direction == 'left') {
_this.next();
}
} else if (mode == 'vertical') {
if (direction == 'down') {
_this.previous();
} else if (direction == 'up') {
_this.next();
}
}
last = c;
}
},
fallbackToMouseEvents: false,
allowPageScroll: (mode == 'horizontal' ? 'vertical' : 'horizontal')
});
}
if(typeof window.MSGesture !== 'undefined'){
var gesture = new MSGesture(),
el = this.$slider.find('> div').get(0),
start = {
x: 0,
y: 0
};
gesture.target = el;
if (mode == 'horizontal') {
el.style['-ms-touch-action'] = 'pan-x';
el.style['-ms-scroll-chaining'] = 'none';
el.style['touch-action'] = 'pan-x';
el.style['scroll-chaining'] = 'none';
} else if (mode == 'vertical') {
el.style['-ms-touch-action'] = 'pan-y';
el.style['-ms-scroll-chaining'] = 'none';
el.style['touch-action'] = 'pan-y';
el.style['scroll-chaining'] = 'none';
}
var eventType = '';
if (window.navigator.pointerEnabled) {
eventType = "pointerdown";
} else if (window.navigator.msPointerEnabled) {
eventType = "MSPointerDown";
}
if(eventType){
el.addEventListener(eventType, function (evt) {
gesture.addPointer(evt.pointerId);
});
}
el.addEventListener("MSGestureStart", function(e){
start.x = e.offsetX;
start.y = e.offsetY;
});
el.addEventListener("MSGestureEnd", function(e){
var zoom = document.documentElement.clientWidth / window.innerWidth;
var hOffset = 10,
vOffset = 10;
if (mode == 'horizontal') {
if (start.x-hOffset >= e.offsetX) {
_this.next();
} else if (start.x+hOffset <= e.offsetX) {
_this.previous();
}
} else if (mode == 'vertical') {
if (start.y-vOffset >= e.offsetY) {
_this.next();
} else if (start.y+vOffset <= e.offsetY) {
_this.previous();
}
}
});
}
},
initKeyboard: function () {
if (this.options.controls.keyboard == '0') return;
var _this = this;
var delayBetween = 500,
last = 0;
$(document).keydown(function(e){
var c = Date.now();
if(last < c - delayBetween){
if (e.keyCode == 37) {
_this.previous();
}else if (e.keyCode == 39) {
_this.next();
}
last = c;
}
});
},
initEvents: function(){
this.$slider.find("*[data-click]").each(function(){
var thisme = $(this);
if(thisme.data('click')!=""){
thisme.on("click", function(e){
var result = eval('(function() {' + thisme.data('click') + '}())');
if(!result){
e.preventDefault();
}
});
}
});
this.$slider.find("*[data-enter]").each(function(){
var thisme = $(this);
if(thisme.data('enter')!=""){
thisme.on("mouseenter", function(){eval(thisme.data('enter'));});
}
});
this.$slider.find("*[data-leave]").each(function(){
var thisme = $(this);
if(thisme.data('leave')!=""){
thisme.on("mouseleave", function(){eval(thisme.data('leave'));});
}
});
},
next: function (autoplay) {
var i = this._active + 1;
if (i === this.slideList.length)
i = 0;
return this.changeTo(i, false, autoplay);
},
previous: function (autoplay) {
var i = this._active - 1;
if (i < 0)
i = this.slideList.length - 1;
return this.changeTo(i, true, autoplay);
},
lazyLoadEnable: function(delayed){
if(this.admin) return;
var _this = this;
this.lazyloaded = [];
this.spinner = $('');
this.spinner.appendTo(this.$slider);
this._changeTo = this.changeTo;
this.changeTo = this.lazyChangeTo;
this.___animateTouch = this.__animateTouch;
this.__animateTouch = this.lazy__animateTouch;
if(delayed){
$(this).one('load', function(){
$(window).on('load', function(){
_this.slideList.each(function(i){
_this.lazyLoadSlide(i, true, true);
_this.lazyLoadFlux(i, true);
});
});
});
}else{
$(this).one('load', function(){
_this.lazyLoadSlide(_this._active, true, true);
_this.lazyLoadFlux(_this._active, true);
});
}
},
lazyLoadSlide: function(i, neighbor, delayed){
if(!this.lazyloaded[i]){
if(!delayed) this.spinner.addClass('nextend-spinner');
var _this = this,
deferred = this.slideList.eq(i).find('img').nextendunveil(this._currentmode);
this.lazyloaded[i] = deferred;
$.when(deferred).then(function(){
_this.lazyloaded[i] = true;
});
}
var v = this.options.lazyloadneighbor;
if(!neighbor && v){
var j = 0,
k = i;
while(j < v){
k--;
if(k < 0) k = this.slideList.length-1;
this.lazyLoadSlide(k, true, false);
j++;
}
j = 0;
k = i;
while(j < v){
k++;
if(k >= this.slideList.length) k = 0;
this.lazyLoadSlide(k, true, false);
j++;
}
}
return this.lazyloaded[i];
},
lazyLoadFlux: function(i, delayed){
if(typeof this.flux != 'undefined'){
if(!delayed) this.spinner.addClass('nextend-spinner');
return $(this.flux.images[i]).nextendunveil(this._currentmode);
}
},
lazyChangeTo: function (i, reversed, autoplay) {
var _this = this;
this.pauseAutoPlay(true);
$.when(this.lazyLoadSlide(i, false, false), this.lazyLoadFlux(i, false)).then(function(){
_this.spinner.removeClass('nextend-spinner');
_this._changeTo(i, reversed, autoplay);
});
},
lazy__animateTouch: function(i, lastActive, prop, target, targetActive){
var _this = this;
this.pauseAutoPlay(true);
$.when(this.lazyLoadSlide(i, false, false), this.lazyLoadFlux(i, false)).then(function(){
_this.spinner.removeClass('nextend-spinner');
_this.___animateTouch(i, lastActive, prop, target, targetActive);
});
},
changeTo: function (i, reversed, autoplay) {
if (window.ssadmin || i === this._active || this._animating)
return false;
if (!this.options.syncAnimations) {
if (this._lastActive != i) this.slideList.eq(this._lastActive).trigger('ssanimatestop');
this.slideList.eq(this._active).trigger('ssanimatestop');
}
this.ssplay = false;
var _this = this;
this.pauseAutoPlay(true);
this._animating = true;
if (this.options.syncAnimations) _this._runningAnimations++;
this._nextActive = i;
this.changeBullet(i);
$(this).trigger('mainanimationstart');
var $currentactiveslide = this.slideList.eq(this._active),
$nextactiveslide = this.slideList.eq(i),
playin = function () {
if (_this.options.inaftermain) {
$nextactiveslide.trigger('ssanimatelayerssetinstart');
_this.$this.on('mainanimationinend.inaftermain', function () {
_this.$this.off('mainanimationinend.inaftermain');
$nextactiveslide.trigger('ssanimatelayersin');
});
_this._runningAnimations++;
_this.animateIn(i, reversed);
} else {
_this._runningAnimations++;
_this.animateIn(i, reversed);
$nextactiveslide.trigger('ssanimatelayersin');
}
};
if (this.options.mainafterout) {
$currentactiveslide.on('ssanimationsended.ssinaftermain', function () {
$currentactiveslide.off('ssanimationsended.ssinaftermain');
_this._runningAnimations++;
_this.animateOut(_this._active, reversed);
playin();
});
if (this.options.syncAnimations) {
$currentactiveslide.trigger('ssanimatelayersout');
}
} else {
this._runningAnimations++;
this.animateOut(this._active, reversed);
if (this.options.syncAnimations) {
$currentactiveslide.trigger('ssanimatelayersout');
}
playin();
}
},
animateOut: function (i, reversed) {
var _this = this;
this._lastActive = i;
var $slide = this.slideList.eq(i);
var motion = ssAnimationManager.getAnimation('no', $slide);
$slide.on('ssanimationsended.ssmainanimateout',function () {
$slide.off('ssanimationsended.ssmainanimateout');
_this.$this.trigger('mainanimationoutend');
_this.mainanimationended();
}).trigger('ssoutanimationstart');
motion.animateOut();
},
animateIn: function (i, reversed) {
var _this = this;
this._active = i;
var $slide = this.slideList.eq(i);
var motion = ssAnimationManager.getAnimation('no', $slide);
$slide.on('ssanimationsended.ssmainanimatein',function () {
$slide.off('ssanimationsended.ssmainanimatein');
_this.$this.trigger('mainanimationinend');
_this.mainanimationended();
_this.mainanimationended();
}).trigger('ssinanimationstart');
motion.animateIn();
},
mainanimationended: function () {
this._runningAnimations--;
if (this._runningAnimations === 0) {
this.slideList.eq(this._lastActive).removeClass(this._parent.slideActive);
this.slideList[this._lastActive].layers.setHiddenState();
this.slideList.eq(this._active).addClass(this._parent.slideActive);
this._animating = false;
this.$this.trigger('mainanimationend');
this.startAutoplay();
if(this.options.autoplayConfig.resumeautoplay.slidechanged) this.reStartAutoPlay();
} else if (this._runningAnimations < 0) {
this._runningAnimations = 0;
}
},
changeBullet: function (i) {
this._bullets.removeClass('active');
this._bullets.eq(i).addClass('active');
this._bar.removeClass('active');
this._bar.eq(i).addClass('active');
this.changeThumbnail(i);
},
changeThumbnail: function (i) {
if (this._thumbnails) this._thumbnails.change(i);
},
initAutoplay: function () {
var _this = this;
this.indicator = window[this.id + '-indicator'];
if (!this.indicator) {
this.indicator = {
hide: function () {
},
show: function () {
},
refresh: function (val) {
}
};
}
this.indicator.reset = function () {
_this.indicatorProgress = 0;
this.refresh(0);
}
this.autoplayTimer = null;
var autoplay = this.options.autoplayConfig;
if (autoplay.stopautoplay.click) {
this.$slider.find('> div').eq(0).on('click', function () {
_this.pauseAutoPlay();
});
}
if (autoplay.stopautoplay.mouseenter) {
this.$slider.find('> div').eq(0).on('mouseenter', function () {
_this.pauseAutoPlay();
});
}
if (autoplay.stopautoplay.slideplaying) {
this.$slider.on('ssplaystarted', function () {
_this.ssplay = true;
_this.pauseAutoPlay();
});
}
if (autoplay.resumeautoplay.mouseleave) {
this.$slider.on('mouseleave', function () {
if (!_this.autoplayTimer){
if(!_this.ssplay){
_this.reStartAutoPlay();
}
}
});
}
this.$slider.on('ssplayended', function () {
_this.ssplay = false;
});
if (autoplay.resumeautoplay.slideplayed) {
this.$slider.on('ssplayended', function () {
if (!_this.autoplayTimer)
_this.reStartAutoPlay();
});
}
if (!this.autoplaybutton) this.autoplaybutton = this.$slider.find('.nextend-autoplay-button');
if (!this.indicatorEl) this.indicatorEl = $('');
if (this.options.autoplay) {
this.startAutoplay = this.startAutoplayWorking;
this.startAutoplay();
} else {
this.pauseAutoPlay();
}
},
startAutoplay: function () {
},
startAutoplayWorking: function () {
var _this = this,
duration = this.options.autoplayConfig.duration;
if (this.autoplayTimer) {
clearTimeout(this.autoplayTimer);
this.autoplayTimer = null;
}
if (this.indicator) {
var shift = 0,
d = duration,
prevProgress = 0,
invPrevProgress = 1;
if (this.indicatorEl.data('animating') && _this.indicatorProgress) {
d *= (1 - _this.indicatorProgress);
prevProgress = _this.indicatorProgress;
invPrevProgress = 1 - prevProgress;
} else {
this.indicator.refresh(0);
}
this.indicatorEl.animate({
width: 1
}, {
duration: d,
progress: function (e, i) {
var j = prevProgress + invPrevProgress * i;
_this.indicator.refresh(j * 100);
_this.indicatorProgress = j;
},
complete: function () {
_this.options.autoplayConfig.counter++;
_this.next(true);
_this.indicatorEl.data('animating', false);
_this.indicatorEl.stop(true);
_this.indicatorProgress = 0;
if(!_this.options.autoplayConfig.autoplayToSlide || _this.options.autoplayConfig.counter < _this.options.autoplayConfig.autoplayToSlide-1) _this.reStartAutoPlay();
}
});
this.indicatorEl.data('animating', true);
} else {
this.autoplayTimer = setTimeout(function () {
this.options.autoplayConfig.counter++;
_this.next(true);
_this.indicatorEl.stop(true);
_this.indicator.refresh(100);
if(!_this.options.autoplayConfig.autoplayToSlide || _this.options.autoplayConfig.counter < _this.options.autoplayConfig.autoplayToSlide-1) _this.reStartAutoPlay();
}, duration);
}
},
pauseAutoPlay: function (reset) {
if (this.autoplayTimer) {
clearTimeout(this.autoplayTimer);
this.autoplayTimer = null;
}
this.autoplaybutton.addClass('paused');
this.indicatorEl.stop(true);
if (reset) {
this.indicator.reset();
}
this.startAutoplay = function () {
};
},
reStartAutoPlay: function () {
this.autoplaybutton.removeClass('paused');
this.startAutoplay = this.startAutoplayWorking;
if (this._runningAnimations === 0) this.startAutoplay();
},
deviceType: function(){
var ua = window.navigator ? window.navigator.userAgent : window.request ? window.request.headers['user-agent'] : 'No User-Agent Provided';
// smart tv
return ua.match(/GoogleTV|SmartTV|Internet.TV|NetCast|NETTV|AppleTV|boxee|Kylo|Roku|DLNADOC|CE\-HTML/i) ? 'desktop'
// tv-based gaming console
: ua.match(/Xbox|PLAYSTATION.3|Wii/i) ? 'desktop'
// tablet
: ua.match(/iPad/i) || ua.match(/tablet/i) && !ua.match(/tablet pc/i) && !ua.match(/RX-34/i) || ua.match(/FOLIO/i) ? 'tablet'
// android tablet
: ua.match(/Linux/i) && ua.match(/Android/i) && !ua.match(/Fennec|mobi|HTC.Magic|HTCX06HT|Nexus.One|SC-02B|fone.945/i) ? 'tablet'
// Kindle or Kindle Fire
: ua.match(/Kindle/i) || ua.match(/Mac.OS/i) && ua.match(/Silk/i) ? 'tablet'
// pre Android 3.0 Tablet
: ua.match(/GT-P10|SC-01C|SHW-M180S|SGH-T849|SCH-I800|SHW-M180L|SPH-P100|SGH-I987|zt180|HTC(.Flyer|\_Flyer)|Sprint.ATP51|ViewPad7|pandigital(sprnova|nova)|Ideos.S7|Dell.Streak.7|Advent.Vega|A101IT|A70BHT|MID7015|Next2|nook/i) || ua.match(/MB511/i) && ua.match(/RUTEM/i) ? 'tablet'
// unique Mobile User Agent
: ua.match(/BOLT|Fennec|Iris|Maemo|Minimo|Mobi|mowser|NetFront|Novarra|Prism|RX-34|Skyfire|Tear|XV6875|XV6975|Google.Wireless.Transcoder/i) ? 'mobile'
// odd Opera User Agent - http://goo.gl/nK90K
: ua.match(/Opera/i) && ua.match(/Windows.NT.5/i) && ua.match(/HTC|Xda|Mini|Vario|SAMSUNG\-GT\-i8000|SAMSUNG\-SGH\-i9/i) ? 'mobile'
// Windows Desktop
: ua.match(/Windows.(NT|XP|ME|9)/) && !ua.match(/Phone/i) || ua.match(/Win(9|.9|NT)/i) ? 'desktop'
// Mac Desktop
: ua.match(/Macintosh|PowerPC/i) && !ua.match(/Silk/i) ? 'desktop'
// Linux Desktop
: ua.match(/Linux/i) && ua.match(/X11/i) ? 'desktop'
// Solaris, SunOS, BSD Desktop
: ua.match(/Solaris|SunOS|BSD/i) ? 'desktop'
// Desktop BOT/Crawler/Spider
: ua.match(/Bot|Crawler|Spider|Yahoo|ia_archiver|Covario-IDS|findlinks|DataparkSearch|larbin|Mediapartners-Google|NG-Search|Snappy|Teoma|Jeeves|TinEye/i) && !ua.match(/Mobile/i) ? 'desktop'
: 'desktop';
},
randomize: function(){
var sl = this.$slider.find('.smart-slider-canvas');
var p = sl.parent();
sl = this.shuffle(sl);
sl.each(function(){
p.append(this);
});
sl.filter('.'+this._parent.slideActive).removeClass(this._parent.slideActive);
sl.eq(0).addClass(this._parent.slideActive);
},
shuffle: function(array) {
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element…
i = Math.floor(Math.random() * m--);
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
});
})(njQuery, window);
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
};
(function ($, scope, undefined) {
scope.ssLayers = NClass.extend({
slide: null,
$slide: null,
layers: null,
show: null,
mode: 'desktop',
init: function (slider, slide, options) {
var _this = this;
this.options = {};
this.slider = slider;
this.slide = slide;
this.$slide = $(slide);
$.extend(this.options, options);
this.refresh();
$(slider).on('resize', function (e, ratio, width, height) {
_this.onResize(ratio, width, height);
});
this.$slide.on('ssanimatelayersin',function () {
_this.animateIn();
}).on('ssanimatelayerssetinstart',function () {
_this.setInStart();
}).on('ssanimatelayerssetoutstart',function () {
_this.setOutStart();
}).on('ssanimatelayersresetin',function () {
_this.resetIn();
}).on('ssanimatelayersresetout',function () {
_this.resetOut();
}).on('ssanimatelayersout',function () {
_this.animateOut();
}).on('ssanimatestop', function () {
_this.stop();
});
},
refresh: function () {
var _this = this;
this.layers = $([]);
var _layers = $('.smart-slider-layer', this.slide),
_active = $(this.slide).hasClass('smart-slider-slide-active');
_layers.each(function () {
var $layer = $(this);
if ($layer.data('animation') !== undefined) {
//$layer.css('display', 'none');
_this.layers.push(this);
$layer.data('slide', _this.slide);
$layer.data('layermanager', _this);
var motionin = _this.getMotionIn($layer);
$layer.data('motionin', motionin);
var motionout = _this.getMotionOut($layer);
$layer.data('motionout', motionout);
if (window.ssadmin === 1) {
motionout.setOutStart();
motionout.reset();
motionin.reset();
}
if(!_active){
motionin.setInStart();
}
}
});
this.show = {
realall: _layers,
notall: $(),
hidden: _layers.filter('*[data-showdesktop="0"][data-showtablet="0"][data-showphone="0"]'),
desktop: _layers.filter('*[data-showdesktop="1"]'),
tablet: _layers.filter('*[data-showtablet="1"]') ,
phone: _layers.filter('*[data-showphone="1"]')
};
this.show.all = _layers.not(this.show.hidden).not(this.show.desktop).not(this.show.tablet).not(this.show.phone)
this.show.notdesktop = $.merge($.merge($([]), this.show.tablet), this.show.phone);
this.show.nottablet = $.merge($.merge($([]), this.show.desktop), this.show.phone);
this.show.notphone = $.merge($.merge($([]), this.show.desktop), this.show.tablet);
this.show.hidden.css('display', 'none');
return this;
},
onResize: function (ratio, width, height) {
this.options.width = width;
this.options.height = height;
},
changeMode: function(mode){
this.mode = mode;
if(mode == 'all'){
this.show['realall'].css('display', 'block');
this.layers = $.merge($([]), this.show['realall']);
mode = 'desktop';
}else{
this.show['not'+mode].css('display', 'none');
this.show['all'].css('display', 'block');
this.show[mode].css('display', 'block');
this.layers = $.merge($.merge($([]), this.show[mode]), this.show['all']);
}
this.layers.each(function(){
var $this = $(this);
var dim = {
left: $this.data(mode+'left'),
top: $this.data(mode+'top'),
width: $this.data(mode+'width'),
height: $this.data(mode+'height')
};
for(var k in dim){
if(typeof dim[k] == 'undefined') dim[k] = $this.data('desktop'+k);
if(typeof dim[k] != 'undefined') this.style[k] = dim[k];
}
$this.data('motionin').refreshPosition(dim);
$this.data('motionout').refreshPosition(dim);
});
},
stop: function () {
this.layers.each(function () {
$(this).data('motionin').stop();
$(this).data('motionout').stop();
});
return this;
},
resetIn: function () {
this.layers.each(function () {
$(this).data('motionin').reset();
});
return this;
},
resetOut: function () {
this.layers.each(function () {
$(this).data('motionout').reset();
});
return this;
},
animateIn: function () {
if (this.layers.length === 0) {
$(this.slide).trigger('noanimation');
} else {
this.layers.each(function () {
$(this).data('motionin').animateIn();
});
}
return this;
},
setInStart: function () {
this.layers.each(function () {
$(this).data('motionout').setOutStart();
$(this).data('motionin').setInStart();
});
return this;
},
animateOut: function () {
if (this.layers.length === 0) {
$(this.slide).trigger('noanimation');
} else {
this.layers.each(function () {
$(this).data('motionout').animateOut();
});
}
return this;
},
setOutStart: function () {
this.layers.each(function () {
$(this).data('motionout').setOutStart();
});
return this;
},
setHiddenState: function () {
this.layers.each(function () {
$(this).data('motionout').setHiddenState();
});
return this;
},
getMotionIn: function ($layer) {
var options = this.options;
return ssAnimationManager.getAnimation($layer.data('animationin'), $layer, {
width: options.width,
height: options.height,
intervalIn: parseInt($layer.data('durationin')),
easingIn: $layer.data('easingin'),
delayIn: parseInt($layer.data('delayin')),
parallaxIn: parseFloat($layer.data('parallaxin'))
});
},
getMotionOut: function ($layer) {
var options = this.options;
return ssAnimationManager.getAnimation($layer.data('animationout'), $layer, {
width: options.width,
height: options.height,
intervalOut: parseInt($layer.data('durationout')),
easingOut: $layer.data('easingout'),
delayOut: parseInt($layer.data('delayout')),
parallaxOut: parseFloat($layer.data('parallaxout'))
});
}
});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationNo = scope.ssAnimation.extend({
init: function (layer, options) {
this._super(layer, options);
},
_setInStart: function () {
this.layer.css('display', 'block');
},
_animateIn: function () {
this.endFN = 'onAnimateInEnd';
this.layer.css('display', 'block');
this['onAnimateInEnd']();
},
_animateOut: function () {
this.endFN = 'onAnimateOutEnd';
this['onAnimateOutEnd']();
}
});
scope.ssAnimationManager.addAnimation('no', scope.ssAnimationNo, {});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationNoStatic = scope.ssAnimation.extend({
init: function (layer, options) {
this._super(layer, options);
},
_setInStart: function () {
},
_animateIn: function () {
this.endFN = 'onAnimateInEnd';
this.layer.css('left', 0);
this['onAnimateInEnd']();
},
_animateOut: function () {
this.endFN = 'onAnimateOutEnd';
this.layer.css('left', '-1000%');
this['onAnimateOutEnd']();
}
});
scope.ssAnimationManager.addAnimation('nostatic', scope.ssAnimationNoStatic, {});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationFade = scope.ssAnimation.extend({
timeout: null,
init: function (layer, options) {
this._super(layer, options);
this.options.animate += " smart-slider-animate-fade";
},
_stop: function () {
var $this = this,
slider = $(this.layer.data('layermanager').slider);
slider.on('mainanimationend.layerstop', function () {
if ($this.timeout) clearTimeout($this.timeout);
$this.layer.stop(true).css('display', 'none');
slider.off('mainanimationend.layerstop');
});
},
_setHiddenState: function () {
this.layer.css('opacity', '1');
},
_setInStart: function () {
this.layer.css('display', 'none');
},
_animateIn: function () {
this._animate(0, 1, this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd');
},
_setOutStart: function () {
this.layer.css('display', 'block').css('opacity', '1');
},
_animateOut: function () {
this._animate(1, 0, this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd');
},
_animate: function (startOpacity, endOpacity, cssclass, interval, easing, delay, endfn) {
this.endFN = endfn;
if (this.timeout) clearTimeout(this.timeout);
var $this = this;
var endDisplay = (endOpacity === 0) ? 'none' : 'block';
this.layer.addClass(cssclass).css('opacity', startOpacity).css('display', 'block');
this.timeout = setTimeout(function () {
$this.layer.animate({
opacity: endOpacity
}, {
duration: interval,
complete: function () {
$this.layer.css('display', endDisplay).removeClass(cssclass);
$this[endfn]();
}
});
}, 50 + delay);
}
});
scope.ssAnimationManager.addAnimation('fade', scope.ssAnimationFade, {});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationFadestatic = scope.ssAnimationFade.extend({
timeout: null,
init: function (layer, options) {
this._super(layer, options);
this.options.animate += " smart-slider-animate-fade";
},
_stop: function () {
var $this = this,
slider = $(this.layer.data('layermanager').slider);
slider.on('mainanimationend.layerstop', function () {
if ($this.timeout) clearTimeout($this.timeout);
$this.layer.stop(true).css('opacity', '0');
slider.off('mainanimationend.layerstop');
});
},
_setHiddenState: function () {
this.layer.css('opacity', '1');
},
_setInStart: function () {
this.layer.css('opacity', '0');
},
_animateIn: function () {
this._animate(0, 1, this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd');
},
_setOutStart: function () {
this.layer.css('display', 'block').css('opacity', '1');
},
_animateOut: function () {
this._animate(1, 0, this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd');
},
_animate: function (startOpacity, endOpacity, cssclass, interval, easing, delay, endfn) {
this.endFN = endfn;
if (this.timeout) clearTimeout(this.timeout);
var $this = this;
this.layer.addClass(cssclass).css('opacity', startOpacity).css('left', 0).css('top', 0);
this.timeout = setTimeout(function () {
$this.layer.animate({
opacity: endOpacity
}, {
duration: interval,
complete: function () {
$this.layer.removeClass(cssclass);
$this[endfn]();
}
});
}, 50 + delay);
}
});
scope.ssAnimationManager.addAnimation('fadestatic', scope.ssAnimationFadestatic, {});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationSlide = scope.ssAnimation.extend({
timeout: null,
delayfnstring: '',
init: function (layer, options) {
var _this = this;
if (!options.target) options.target = {};
this._super(layer, options);
this.options.animate += " smart-slider-animate-slide";
var l = layer[0];
l.origLeftPercent = parseFloat(l.style.left);
l.origTopcent = parseFloat(l.style.top);
if (!l.origLeftPercent) l.origLeftPercent = 0;
if (!l.origTopcent) l.origTopcent = 0;
var layermanager = $(this.layer).data('layermanager');
if (layermanager) {
$(layermanager.slider).on('resize', function (e, ratio, width, height) {
_this.onResize(ratio, width, height);
});
}
},
_stop: function () {
var $this = this,
slider = $(this.layer.data('layermanager').slider);
window[$this.delayfnstring] = null;
try {
delete window[$this.delayfnstring];
} catch (e) {
}
if (this.timeout) clearTimeout(this.timeout);
slider.on('mainanimationend.layerstop', function () {
$this.layer.css('display', 'none').stop(true);
slider.off('mainanimationend.layerstop');
});
},
onResize: function (ratio, width, height) {
this.options.width = width;
this.options.height = height;
},
refreshPosition: function(dim){
var l = this.layer[0];
l.origLeftPercent = parseFloat(dim.left);
l.origTopcent = parseFloat(dim.top);
},
_setInStart: function () {
var coords = this.getCoords(this.options.mode, this.options.parallaxIn, false);
var left = this.layer[0].origLeftPercent / 100 * this.options.width;
var top = this.layer[0].origTopcent / 100 * this.options.height;
this.layer.css('visibility', 'hidden')
.css('left', left + coords.origX)
.css('top', top + coords.origY);
},
_animateIn: function () {
this._animate(this.getCoords(this.options.mode, this.options.parallaxIn, false), 'hidden', 'block', 'block', this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd');
},
_setOutStart: function () {
this.layer.css('left', this.layer[0].origLeftPercent + '%')
.css('top', this.layer[0].origTopcent + '%')
.css('display', 'block');
},
_animateOut: function () {
this._animate(this.getCoords(this.options.mode, this.options.parallaxOut, true), 'visible', 'block', 'none', this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd');
},
_animate: function (coords, startVisibility, startDisplay, endDisplay, cssclass, interval, easing, delay, endfn) {
this.endFN = endfn;
var $this = this,
options = this.options;
var left = this.layer[0].origLeftPercent / 100 * options.width;
var top = this.layer[0].origTopcent / 100 * options.height;
this.layer.addClass(cssclass).css('left', left + coords.origX).css('top', top + coords.origY).css('visibility', startVisibility).css('display', startDisplay);
var target = {};
$.extend(target, this.options.target);
if (coords.targetX !== null) target.left = left + coords.targetX;
if (coords.targetY !== null) target.top = top + coords.targetY;
if (typeof $.easing[easing] != 'function') easing = 'linear';
var delay = 50 + delay,
delaystring = 'sstimer' + delay,
delayfnstring = delaystring + 'fns';
this.delayfnstring = delayfnstring;
if (!window[delayfnstring]) window[delayfnstring] = [];
window[delayfnstring].push(function () {
$this.layer.css('visibility', 'visible').animate(target, {
duration: interval,
easing: easing,
complete: function () {
$this.layer.css('display', endDisplay).removeClass(cssclass).css('left', $this.layer[0].origLeftPercent + '%').css('top', $this.layer[0].origTopcent + '%');
$this[endfn]();
}
});
});
if (window[delaystring]) clearTimeout(window[delaystring]);
this.timeout = window[delaystring] = setTimeout(function () {
for (var i = 0; i < window[delayfnstring].length; i++) {
window[delayfnstring][i]();
}
window[delayfnstring] = null;
try {
delete window[delayfnstring];
} catch (e) {
}
}, delay);
},
getCoords: function (direction, parallax, out) {
var coords = {
targetX: null,
targetY: null,
origX: 0,
origY: 0
}, options = this.options;
if (out) {
switch (direction) {
case 'righttoleft':
coords.origX = 0;
coords.targetX = -1 * options.width * parallax;
break;
case 'lefttoright':
coords.origX = 0;
coords.targetX = options.width * parallax;
break;
case 'toptobottom':
coords.origY = 0;
coords.targetY = options.height * parallax;
break;
case 'bottomtotop':
coords.origY = 0;
coords.targetY = -1 * options.height * parallax;
break;
default:
}
} else {
switch (direction) {
case 'righttoleft':
coords.origX = options.width * parallax;
coords.targetX = 0;
break;
case 'lefttoright':
coords.origX = -1 * options.width * parallax;
coords.targetX = 0;
break;
case 'toptobottom':
coords.origY = -1 * options.height * parallax;
coords.targetY = 0;
break;
case 'bottomtotop':
coords.origY = options.height * parallax;
coords.targetY = 0;
break;
default:
}
}
return coords;
}
});
scope.ssAnimationManager.addAnimation('slidelefttoright', scope.ssAnimationSlide, {
mode: 'lefttoright'
});
scope.ssAnimationManager.addAnimation('sliderighttoleft', scope.ssAnimationSlide, {
mode: 'righttoleft'
});
scope.ssAnimationManager.addAnimation('slidetoptobottom', scope.ssAnimationSlide, {
mode: 'toptobottom'
});
scope.ssAnimationManager.addAnimation('slidebottomtotop', scope.ssAnimationSlide, {
mode: 'bottomtotop'
});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationSlideStatic = scope.ssAnimationSlide.extend({
timeout: null,
delayfnstring: '',
init: function (layer, options) {
var _this = this;
if (!options.target) options.target = {};
this._super(layer, options);
this.options.animate += " smart-slider-animate-slide";
var layermanager = $(this.layer).data('layermanager');
if (layermanager) {
$(layermanager.slider).on('resize', function (e, ratio, width, height) {
_this.onResize(ratio, width, height);
});
}
},
_stop: function () {
var $this = this,
slider = $(this.layer.data('layermanager').slider);
window[$this.delayfnstring] = null;
try {
delete window[$this.delayfnstring];
} catch (e) {
}
if (this.timeout) clearTimeout(this.timeout);
slider.on('mainanimationend.layerstop', function () {
$this.layer.stop(true);
slider.off('mainanimationend.layerstop');
});
},
refreshPosition: function(){
},
_setInStart: function () {
var coords = this.getCoords(this.options.mode, this.options.parallaxIn, false);
this.layer.css('visibility', 'hidden').css('left', coords.origX).css('top', coords.origY);
},
_animateIn: function () {
this._animate(this.getCoords(this.options.mode, this.options.parallaxIn, false), this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, 'onAnimateInEnd');
},
_setOutStart: function () {
this.layer.css('left', '0%').css('top', '0%');
},
_animateOut: function () {
this._animate(this.getCoords(this.options.mode, this.options.parallaxOut, true), this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, 'onAnimateOutEnd');
},
_animate: function (coords, cssclass, interval, easing, delay, endfn) {
this.endFN = endfn;
var $this = this,
options = this.options;
this.layer.addClass(cssclass).css('left', coords.origX).css('top', coords.origY).css('opacity', 1);
var target = {};
$.extend(target, this.options.target);
if (coords.targetX !== null) target.left = coords.targetX;
if (coords.targetY !== null) target.top = coords.targetY;
if (typeof $.easing[easing] != 'function') easing = 'linear';
var delay = 50 + delay,
delaystring = 'sstimer' + delay,
delayfnstring = delaystring + 'fns';
this.delayfnstring = delayfnstring;
if (!window[delayfnstring]) window[delayfnstring] = [];
window[delayfnstring].push(function () {
$this.layer.animate(target, {
duration: interval,
easing: easing,
complete: function () {
$this.layer.removeClass(cssclass);
if(typeof target.left != 'undefined' && target.left != 0) $this.layer.css('left', '-1000%');
if(typeof target.top != 'undefined' && target.top != 0) $this.layer.css('left', '-1000%');
$this[endfn]();
}
});
});
if (window[delaystring]) clearTimeout(window[delaystring]);
this.timeout = window[delaystring] = setTimeout(function () {
for (var i = 0; i < window[delayfnstring].length; i++) {
window[delayfnstring][i]();
}
window[delayfnstring] = null;
try {
delete window[delayfnstring];
} catch (e) {
}
}, delay);
}
});
scope.ssAnimationManager.addAnimation('slidestaticlefttoright', scope.ssAnimationSlideStatic, {
mode: 'lefttoright'
});
scope.ssAnimationManager.addAnimation('slidestaticrighttoleft', scope.ssAnimationSlideStatic, {
mode: 'righttoleft'
});
scope.ssAnimationManager.addAnimation('slidestatictoptobottom', scope.ssAnimationSlideStatic, {
mode: 'toptobottom'
});
scope.ssAnimationManager.addAnimation('slidestaticbottomtotop', scope.ssAnimationSlideStatic, {
mode: 'bottomtotop'
});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssAnimationTransit = scope.ssAnimation.extend({
timeout: null,
init: function (layer, options) {
var _this = this;
//$.transit.useTransitionEnd = true;
this._super(layer, options);
this.options.animate += " smart-slider-animate-slide";
},
reset: function () {
if (this.options.reset) {
this.layer.css(this.options.reset);
}
},
_stop: function () {
if (this.timeout) clearTimeout(this.timeout);
var $this = this,
slider = $(this.layer.data('layermanager').slider);
slider.on('mainanimationend.layerstop', function () {
$this.layer.transitionStop(true).css('display', 'none');
slider.off('mainanimationend.layerstop');
});
},
_setInStart: function () {
this.layer.css('visibility', 'hidden').css(this.options.startCSS);
},
_animateIn: function () {
this._animate(this.options.animationin, $.extend({}, this.options.startCSS), $.extend({}, this.options.endCSS), 'hidden', 'block', 'block', this.options.animate + ' ' + this.options.animateIn, this.options.intervalIn, this.options.easingIn, this.options.delayIn, this.options.parallaxIn, 'onAnimateInEnd');
},
_setOutStart: function () {
var endcss = $.extend({}, this.options.endCSS);
if (this.options.parallax) {
for (var i = 0; i < this.options.parallax.length; i++) {
var prop = this.options.parallax[i];
endcss[prop] *= this.options.parallaxOut;
}
}
this.layer.css(endcss).css('display', 'block');
},
_animateOut: function () {
this._animate(this.options.animationout, $.extend({}, this.options.endCSS), $.extend({}, this.options.startCSS), 'visible', 'block', 'block', this.options.animate + ' ' + this.options.animateOut, this.options.intervalOut, this.options.easingOut, this.options.delayOut, this.options.parallaxOut, 'onAnimateOutEnd');
},
_animate: function (animation, startcss, endcss, startVisibility, startDisplay, endDisplay, cssclass, interval, easing, delay, parallax, endfn) {
this.endFN = endfn;
var $this = this,
options = this.options;
var left = this.layer[0].origLeftPercent / 100 * options.width;
var top = this.layer[0].origTopcent / 100 * options.height;
if (this.options.parallax) {
for (var i = 0; i < this.options.parallax.length; i++) {
var prop = this.options.parallax[i];
startcss[prop] *= parallax;
endcss[prop] *= parallax;
}
}
this.layer.addClass(cssclass).css('visibility', startVisibility).css(startcss).css('display', startDisplay);
if (typeof $.easing[easing] != 'function') easing = 'linear';
this.timeout = setTimeout(function () {
var layer = $this.layer,
percent = 0;
if (nModernizr.csstransitions && animation && animation.length > 0) {
for (var i = 0; i < animation.length; i++) {
layer.css('visibility', 'visible').transition(
animation[i].css,
interval * (animation[i].percent - percent) / 100,
easing
);
percent = animation[i].percent;
}
}
layer.data('sstransit', endfn);
layer.css('visibility', 'visible').transition(
endcss,
interval * (100 - percent) / 100,
easing,
function () {
$this.layer.css('display', endDisplay).removeClass(cssclass);
$this[endfn]();
}
);
}, 50 + parseInt(delay));
}
});
scope.ssAnimationManager.addAnimation('flipx', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
perspective: '400px',
rotateX: 90
},
animationin: [
{
percent: 40,
css: {
opacity: 0.4,
rotateX: -10
}
},
{
percent: 70,
css: {
opacity: 0.7,
rotateX: 10
}
}
],
endCSS: {
opacity: 1,
rotateX: 0
}
});
scope.ssAnimationManager.addAnimation('flipy', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
perspective: '400px',
rotateY: 90
},
animationin: [
{
percent: 40,
css: {
opacity: 0.4,
rotateY: -10
}
},
{
percent: 70,
css: {
opacity: 0.7,
rotateY: 10
}
}
],
endCSS: {
opacity: 1,
rotateY: 0
}
});
scope.ssAnimationManager.addAnimation('fadeup', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
y: 1000
},
endCSS: {
opacity: 1,
y: 0
},
parallax: ['y']
});
scope.ssAnimationManager.addAnimation('faderight', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
x: 1000
},
endCSS: {
opacity: 1,
x: 0
},
parallax: ['x']
});
scope.ssAnimationManager.addAnimation('fadedown', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
y: -1000
},
endCSS: {
opacity: 1,
y: 0
},
parallax: ['y']
});
scope.ssAnimationManager.addAnimation('fadeleft', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
x: -1000
},
endCSS: {
opacity: 1,
x: 0
},
parallax: ['x']
});
scope.ssAnimationManager.addAnimation('bounce', scope.ssAnimationTransit, {
startCSS: {
opacity: 0,
scale: 0
},
animationin: [
{
percent: 50,
css: {
opacity: 1,
scale: 1.05
}
},
{
percent: 70,
css: {
scale: 0.9
}
}
],
endCSS: {
opacity: 1,
scale: 1
}
});
scope.ssAnimationManager.addAnimation('rotate', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'center center',
rotate: -360
},
endCSS: {
transformOrigin: 'center center',
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rotateupleft', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'left bottom',
rotate: 90
},
endCSS: {
transformOrigin: 'left bottom',
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rotatedownleft', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'left bottom',
rotate: -90
},
endCSS: {
transformOrigin: 'left bottom',
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rotateupright', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'right bottom',
rotate: 90
},
endCSS: {
transformOrigin: 'right bottom',
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rotatedownright', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'right bottom',
rotate: -90
},
endCSS: {
transformOrigin: 'right bottom',
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rollin', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'center center',
opacity: 0,
x: '-100%',
rotate: -360
},
endCSS: {
transformOrigin: 'center center',
opacity: 1,
x: 0,
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('rollout', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'center center',
opacity: 0,
x: '100%',
rotate: 360
},
endCSS: {
transformOrigin: 'center center',
opacity: 1,
x: 0,
rotate: 0
},
parallax: ['rotate']
});
scope.ssAnimationManager.addAnimation('scale', scope.ssAnimationTransit, {
startCSS: {
transformOrigin: 'center center',
scale: 0
},
endCSS: {
transformOrigin: 'center center',
scale: 1
}
});
})(njQuery, window);(function ($, scope, undefined) {
scope.ssSimpleSlider = scope.ssTypeBase.extend({
extraParallax: 1,
init: function (parent, $el, options) {
var _this = this;
options.flux[0] = (options.flux[0] && parseInt(options.flux[0])) ? true : false;
this._super(parent, $el, options);
},
afterInit: function(){
var _this = this;
this._super();
this.smartsliderborder2 = this.$slider.find('.smart-slider-border2');
this.slideList.not(this.slideList.eq(this._active)).css('left', '-1000%');
this.$this.on('mainanimationoutend', function () {
var $slide = this.slideList.eq(_this._lastActive);
//$slide.css('display', 'none');
});
$(this).on('load.firstsub', function () {
$(this).off('load.firstsub');
});
},
sizeInited: function () {
if(njQuery('#'+this.id+' .nextend-flux img').length != this.slideList.length) this.options.flux[0] = 0;
if (this.options.flux[0]) {
this.flux = new flux.slider('#'+this.id+' .nextend-flux', {
transitions: this.options.flux[1],
width: this.slideDimension.w,
height: this.slideDimension.h,
currentImageIndex: this._active,
nextImageIndex: this._active + 1
});
}
},
storeDefaults: function () {
var _this = this,
ss = this.$slider;
ss.data('ss-outerwidth', ss.outerWidth(true));
//ss.data('ss-fontsize', parseInt(ss.css('fontSize')));
this.variables.margintop = parseInt(ss.css('marginTop'));
this.variables.marginright = parseInt(ss.css('marginRight'));
this.variables.marginbottom = parseInt(ss.css('marginBottom'));
this.variables.marginleft = parseInt(ss.css('marginLeft'));
ss.data('ss-m-t', this.variables.margintop);
ss.data('ss-m-r', this.variables.marginright);
ss.data('ss-m-b', this.variables.marginbottom);
ss.data('ss-m-l', this.variables.marginleft);
this.variables.outerwidth = ss.parent().width();
this.variables.outerheight = ss.parent().height();
this.variables.width = ss.width();
this.variables.height = ss.height();
ss.data('ss-w', this.variables.width);
ss.data('ss-h', this.variables.height);
var smartsliderborder1 = this.smartsliderborder1 = ss.find('.smart-slider-border1');
smartsliderborder1.data('ss-w', smartsliderborder1.width());
smartsliderborder1.data('ss-h', smartsliderborder1.height());
smartsliderborder1.data('ss-p-t', parseInt(smartsliderborder1.css('paddingTop')));
smartsliderborder1.data('ss-p-r', parseInt(smartsliderborder1.css('paddingRight')));
smartsliderborder1.data('ss-p-b', parseInt(smartsliderborder1.css('paddingBottom')));
smartsliderborder1.data('ss-p-l', parseInt(smartsliderborder1.css('paddingLeft')));
var canvases = this.smartslidercanvasinner = this.slideList.find('.smart-slider-canvas-inner');
this.variables.canvaswidth = canvases.width();
this.variables.canvasheight = canvases.height();
canvases.data('ss-w', this.variables.canvaswidth);
canvases.data('ss-h', this.variables.canvasheight);
this.slideList.css({
width: this.variables.canvaswidth,
height: this.variables.canvasheight
});
this.imagesinited = false;
this.load(function () {
$.each(_this.slidebgList, function(){
var $img = $(this);
var im = $("").attr("src", $img.attr("src"));
$img.data('ss-w', im[0].width < 10 ? _this.variables.canvaswidth : im[0].width);
$img.data('ss-h', im[0].height < 10 ? _this.variables.canvasheight : im[0].height);
});
_this.imagesinited = true;
_this.$slider.trigger('imagesinited');
});
this.slidebgList.on('lazyloaded', function(){
var $img = $(this);
var im = $("").attr("src", $img.attr("src"));
$img.data('ss-w', im[0].width < 10 ? _this.variables.canvaswidth : im[0].width);
$img.data('ss-h', im[0].height < 10 ? _this.variables.canvasheight : im[0].height);
if(typeof _this.variables.oCanvasWidth != 'undefined') $img.height(parseInt(_this.variables.oCanvasWidth/$img.data('ss-w')*$img.data('ss-h')));
});
this.variablesRefreshed();
},
onResize: function (fixedratio) {
var _this = this,
ss = this.$slider;
var modechanged = this.refreshMode(); //this._currentmode
var ratio = 1;
var availableWidth = ss.parent().width();
var outerWidth = ss.data('ss-outerwidth');
if (!this.options.responsive.upscale && availableWidth > outerWidth) availableWidth = outerWidth;
if(typeof fixedratio == 'undefined'){
if (availableWidth != outerWidth) {
ratio = availableWidth / outerWidth;
}
if (!modechanged && (this.lastAvailableWidth == availableWidth || !this.options.responsive.downscale && ratio < 1)) {
var _this = this;
this.load(function () {
$(_this).trigger('load');
});
return true;
}
}else{
ratio = fixedratio;
}
this.lastAvailableWidth = availableWidth;
ss.css('fontSize', ss.data(this._currentmode+'fontsize') * ratio + 'px');
this.variables.margintop = parseInt(ss.data('ss-m-t') * ratio);
this.variables.marginright = parseInt(ss.data('ss-m-r') * ratio);
this.variables.marginbottom = parseInt(ss.data('ss-m-b') * ratio);
this.variables.marginleft = parseInt(ss.data('ss-m-l') * ratio);
ss.css('marginTop', this.variables.margintop);
ss.css('marginRight', this.variables.marginright);
ss.css('marginBottom', this.variables.marginbottom);
ss.css('marginLeft', this.variables.marginleft);
var smartsliderborder1 = this.smartsliderborder1;
smartsliderborder1.css('paddingTop', parseInt(smartsliderborder1.data('ss-p-t') * ratio) + 'px');
smartsliderborder1.css('paddingRight', parseInt(smartsliderborder1.data('ss-p-r') * ratio) + 'px');
smartsliderborder1.css('paddingBottom', parseInt(smartsliderborder1.data('ss-p-b') * ratio) + 'px');
smartsliderborder1.css('paddingLeft', parseInt(smartsliderborder1.data('ss-p-l') * ratio) + 'px');
smartsliderborder1.width(parseInt(smartsliderborder1.data('ss-w') * ratio));
this.variables.width = smartsliderborder1.outerWidth(true);
ss.width(this.variables.width);
var canvases = this.smartslidercanvasinner;
var oCanvasWidth = canvasWidth = parseInt(canvases.data('ss-w') * ratio),
oCanvasHeight = parseInt(canvases.data('ss-h') * ratio),
margin = 0,
maxw = this.options.responsive.maxwidth,
ratio2 = ratio;
if (canvasWidth > this.options.responsive.maxwidth) {
margin = parseInt((canvasWidth - maxw) / 2);
ratio2 = maxw / canvases.data('ss-w');
canvasWidth = parseInt(canvases.data('ss-w') * ratio2);
}
this.extraParallax = ratio / ratio2;
var canvasHeight = parseInt(canvases.data('ss-h') * ratio2);
this.variables.oCanvasWidth = oCanvasWidth;
if (this.options.flux[0]) this.flux.changeSize(oCanvasWidth, canvasHeight);
canvases.width(canvasWidth).height(canvasHeight).css({
marginLeft: margin,
marginRight: margin
});
this.slideList.css({
width: canvases.outerWidth(true),
height: canvases.outerHeight(true)
});
smartsliderborder1.css('fontSize', ss.data(this._currentmode+'fontsize') * ratio2 + 'px');
smartsliderborder1.height(canvasHeight);
this.variables.height = smartsliderborder1.outerHeight(true);
ss.height(this.variables.height);
this.slideDimension.w = canvasWidth;
this.slideDimension.h = canvasHeight;
this.variables.canvaswidth = canvasWidth;
this.variables.canvasheight = canvasHeight;
this.variables.outerwidth = ss.parent().width();
this.variables.outerheight = ss.parent().height();
this.slidebgList.width(oCanvasWidth);
var bgfn = function () {
$.each(_this.slidebgList, function(){
var $img = $(this);
$img.height(parseInt(oCanvasWidth/$img.data('ss-w')*$img.data('ss-h')));
});
};
if(_this.imagesinited){
bgfn();
}else{
_this.$slider.on('imagesinited', function(){
bgfn();
});
}
for (var i = 0; i < window[this.id + '-onresize'].length; i++) {
window[this.id + '-onresize'][i](ratio);
}
$(this).trigger('resize', [ratio, canvasWidth, canvasHeight]);
var _this = this;
this.load(function () {
$(_this).trigger('load');
});
this.variablesRefreshed();
},
animateOut: function (i, reversed) {
var _this = this;
this._lastActive = i;
this.initAnimation();
var $slide = this.slideList.eq(i);
$slide.on('ssanimationsended.ssmainanimateout',function () {
$slide.off('ssanimationsended.ssmainanimateout');
_this.$this.trigger('mainanimationoutend');
_this.mainanimationended();
}).trigger('ssoutanimationstart');
this.__animateOut($slide, reversed).animateOut();
},
animateIn: function (i, reversed) {
this._active = i;
var _this = this,
$slide = this.slideList.eq(i);
$slide.width(this.slideList.width());
$slide.on('ssanimationsended.ssmainanimatein',function () {
$slide.off('ssanimationsended.ssmainanimatein');
_this.$this.trigger('mainanimationinend');
_this.mainanimationended();
}).trigger('ssinanimationstart');
if (this.options.flux[0]) {
//make them synced
var ended = null,
endFN = function(){
_this.mainanimationended();
$slide.trigger('decrementanimation');
};
ended = function(){
ended = endFN;
};
$slide.trigger('incrementanimation');
this.__animateIn($slide, reversed,function () {
ended();
}).animateIn();
this.flux.element.on('fluxTransitionEnd.ss', function (event) {
$(this).off('fluxTransitionEnd.ss');
ended();
});
this.flux.showImage(i);
} else {
this.__animateIn($slide, reversed,function () {
_this.mainanimationended();
}).animateIn();
}
},
initAnimation: function () {
var currentAnimation = this.options.animation[Math.floor(Math.random() * this.options.animation.length)];
this._animationOptions = {
next: {},
current: {}
};
this._animationOptions.next = $.merge(this.options.animationSettings, this._animationOptions.next);
this._animationOptions.current = $.merge(this.options.animationSettings, this._animationOptions.current);
switch (currentAnimation) {
case 'horizontal':
this.__animateIn = this.__animateInHorizontal;
this.__animateOut = this.__animateOutHorizontal;
break;
case 'vertical':
this.__animateIn = this.__animateInVertical;
this.__animateOut = this.__animateOutVertical;
break;
case 'fade':
this.__animateIn = this.__animateInFade;
this.__animateOut = this.__animateOutFade;
break;
default:
this.__animateIn = this.__animateInNo;
this.__animateOut = this.__animateOutNo;
break;
}
},
__animateIn: function ($slide, reversed, end) {
},
__animateOut: function ($slide, reversed, end) {
},
__animateInNo: function ($slide, reversed, end) {
if (end) end();
return ssAnimationManager.getAnimation('nostatic', $slide, {});
},
__animateOutNo: function ($slide, reversed, end) {
if (end) end();
return ssAnimationManager.getAnimation('nostatic', $slide, {});
},
__animateInHorizontal: function ($slide, reversed, end) {
var option = this._animationOptions.next;
return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestaticlefttoright' : 'slidestaticrighttoleft', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalIn: option.duration,
easingIn: option.easing,
delayIn: option.delay,
parallaxIn: option.parallax * this.extraParallax,
target: {},
endFn: function () {
if (end) end();
}
});
},
__animateOutHorizontal: function ($slide, reversed, end) {
var _this = this,
option = this._animationOptions.current,
target = option.parallax < 1 ? {width: this.smartsliderborder2.width() * option.parallax} : {};
return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestaticlefttoright' : 'slidestaticrighttoleft', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalOut: option.duration,
easingOut: option.easing,
delayOut: option.delay,
parallaxOut: option.parallax * this.extraParallax,
target: target,
endFn: function () {
$slide.width(_this.smartsliderborder2.width());
if (end) end();
}
});
},
__animateInVertical: function ($slide, reversed, end) {
var option = this._animationOptions.next;
return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestatictoptobottom' : 'slidestaticbottomtotop', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalIn: option.duration,
easingIn: option.easing,
delayIn: option.delay,
parallaxIn: option.parallax * this.extraParallax,
target: {},
endFn: function () {
if (end) end();
}
});
},
__animateOutVertical: function ($slide, reversed, end) {
var _this = this,
option = this._animationOptions.current,
target = option.parallax < 1 ? {height: this.smartsliderborder2.height() * option.parallax} : {};
return ssAnimationManager.getAnimation((reversed && option.parallax >= 1) ? 'slidestatictoptobottom' : 'slidestaticbottomtotop', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalOut: option.duration,
easingOut: option.easing,
delayOut: option.delay,
parallaxOut: option.parallax * this.extraParallax,
target: target,
endFn: function () {
$slide.height(_this.smartsliderborder2.height());
if (end) end();
}
});
},
__animateInFade: function ($slide, reversed, end) {
var option = this._animationOptions.next;
return ssAnimationManager.getAnimation('fadestatic', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalIn: option.duration,
easingIn: option.easing,
delayIn: option.delay,
parallaxIn: option.parallax * this.extraParallax,
endFn: function () {
if (end) end();
}
});
},
__animateOutFade: function ($slide, reversed, end) {
var option = this._animationOptions.current;
return ssAnimationManager.getAnimation('fadestatic', $slide, {
width: this.slideDimension.w,
height: this.slideDimension.h,
intervalOut: option.duration,
easingOut: option.easing,
delayOut: option.delay,
parallaxOut: option.parallax * this.extraParallax,
endFn: function () {
if (end) end();
}
});
},
initTouch: function () {
if((this.options.touchanimation != 'horizontal' && this.options.touchanimation != 'vertical') || (typeof jQuery != 'undefined' && typeof jQuery.UIkit != 'undefined')){
this._super();
return;
}
var _this = this;
var mode = this.options.touchanimation,
reset = [];
this.$slider.find('> div').eq(0).swipe({
tap: function(event, target) {
var act = _this.slideList.eq(_this._active).trigger('click');
if(typeof act.attr("onclick") != undefined){
event.preventDefault();
event.stopPropagation();
}
},
swipe: function (event, direction, distance, duration, fingerCount) {
if(_this._animating) return;
if(_this.options.touchanimation == 'horizontal'){
_this.__animateHorizontalTouch(direction);
}else if(_this.options.touchanimation == 'vertical'){
_this.__animateVerticalTouch(direction);
}
},
swipeStatus:function(event, phase, direction, distance, duration, fingers){
if(_this._animating) return;
var active = _this._active,
next = null;
if(_this.options.touchanimation == 'horizontal'){
if(direction == 'left'){
next = active + 1;
if (next === _this.slideList.length) next = 0;
_this.slideList.eq(active).css('left', -distance);
_this.slideList.eq(next).css('left', _this.slideDimension.w-distance)/*.css('display', 'block')*/;
}else if(direction == 'right'){
next = active - 1;
if (next < 0) next = _this.slideList.length - 1;
_this.slideList.eq(active).css('left', distance);
_this.slideList.eq(next).css('left', -_this.slideDimension.w+distance)/*.css('display', 'block')*/;
}
if(phase=="end"){
reset = [];
if(distance < 75){
_this.slideList.eq(active).css('left', 0);
if(next !== null) _this.slideList.eq(next).css('left', '-1000%');
}
}
}else if(_this.options.touchanimation == 'vertical'){
if(direction == 'up'){
next = active + 1;
if (next === _this.slideList.length) next = 0;
_this.slideList.eq(active).css('top', -distance);
_this.slideList.eq(next).css('top', _this.slideDimension.h-distance).css('left', '0')/*.css('display', 'block')*/;
}else if(direction == 'down'){
next = active - 1;
if (next < 0) next = _this.slideList.length - 1;
_this.slideList.eq(active).css('top', distance);
_this.slideList.eq(next).css('top', -_this.slideDimension.h+distance).css('left', '0')/*.css('display', 'block')*/;
}
if(phase=="end"){
reset = [];
if(distance < 75){
_this.slideList.eq(active).css('top', 0);
if(next !== null) _this.slideList.eq(next).css('left', '-1000%')/*.css('display', 'none')*/;
}
}
}
if(next !== null && typeof reset[next] == 'undefined'){
_this.slideList.eq(next).trigger('ssanimatelayerssetinstart');
reset[next] = true;
}
},
fallbackToMouseEvents: false,
allowPageScroll: (_this.options.touchanimation == 'horizontal' ? 'vertical' : 'horizontal')
});
if(typeof window.MSGesture !== 'undefined'){
var gesture = new MSGesture(),
el = this.$slider.find('> div').get(0),
start = {
x: 0,
y: 0
};
gesture.target = el;
if (mode == 'horizontal') {
el.style['-ms-touch-action'] = 'pan-x';
el.style['-ms-scroll-chaining'] = 'none';
el.style['touch-action'] = 'pan-x';
el.style['scroll-chaining'] = 'none';
} else if (mode == 'vertical') {
el.style['-ms-touch-action'] = 'pan-y';
el.style['-ms-scroll-chaining'] = 'none';
el.style['touch-action'] = 'pan-y';
el.style['scroll-chaining'] = 'none';
}
var eventType = '';
if (window.navigator.pointerEnabled) {
eventType = "pointerdown";
} else if (window.navigator.msPointerEnabled) {
eventType = "MSPointerDown";
}
if(eventType){
el.addEventListener(eventType, function (evt) {
gesture.addPointer(evt.pointerId);
});
}
var hOffset = 10,
vOffset = 10;
el.addEventListener("MSGestureStart", function(e){
start.x = e.offsetX;
start.y = e.offsetY;
});
el.addEventListener("MSGestureEnd", function(e){
var zoom = document.documentElement.clientWidth / window.innerWidth;
if (mode == 'horizontal') {
if (start.x-hOffset >= e.offsetX) {
_this.next();
} else if (start.x+hOffset <= e.offsetX) {
_this.previous();
}
} else if (mode == 'vertical') {
if (start.y-vOffset >= e.offsetY) {
_this.next();
} else if (start.y+vOffset <= e.offsetY) {
_this.previous();
}
}
});
}
},
__animateHorizontalTouch: function(direction){
var target = {left: 0},
active = this._active,
i = null;
if(direction == 'left'){
i = active + 1;
if (i === this.slideList.length) i = 0;
target = {left: -this.slideDimension.w};
this.__animateTouch(i, active, 'left', target, {left: 0});
}else if(direction == 'right'){
i = active - 1;
if (i < 0) i = this.slideList.length - 1;
target = {left: this.slideDimension.w};
this.__animateTouch(i, active, 'left', target, {left: 0});
}
},
__animateVerticalTouch: function(direction){
var target = 0,
active = this._active,
i = null;
if(direction == 'up'){
i = active + 1;
if (i === this.slideList.length) i = 0;
target = {top: -this.slideDimension.h};
this.__animateTouch(i, active, 'top', target, {top: 0});
}else if(direction == 'down'){
i = active - 1;
if (i < 0) i = this.slideList.length - 1;
target = {top: this.slideDimension.h};
this.__animateTouch(i, active, 'top', target, {top: 0});
}
},
__animateTouch: function(i, lastActive, prop, target, targetActive){
if (!this.options.syncAnimations) {
if (this._lastActive != i) this.slideList.eq(this._lastActive).trigger('ssanimatestop');
this.slideList.eq(this._active).trigger('ssanimatestop');
}
var _this = this;
this.pauseAutoPlay(true);
this._animating = true;
this.changeBullet(i);
if (this.options.syncAnimations) _this._runningAnimations++;
this._nextActive = i;
this.changeBullet(i);
$(this).trigger('mainanimationstart');
this._active = i;
this._lastActive = lastActive;
this._runningAnimations++;
if (this.options.flux[0]) this.flux.showImage(i);
this.slideList.eq(lastActive).animate(target,{
duration: 300,
complete: function(){
$(this).css(prop, 0).css('left', '-1000%');
_this.$this.trigger('mainanimationoutend');
_this.mainanimationended();
}
}).trigger('ssanimatelayersout');
this.slideList.eq(i).animate(targetActive,{
duration: 300,
complete: function(){
$(this).trigger('ssanimatelayersin');
_this.$this.trigger('mainanimationinend');
_this.mainanimationended();
}
});
},
randomize: function(){
var sl = this.$slider.find('.smart-slider-canvas'),
flux = this.$slider.find('.nextend-flux'),
fluximg = flux.find('img');
var p = sl.parent();
if(fluximg.length > 0){
sl.each(function(i){
this._flux = fluximg[i];
});
}
sl = this.shuffle(sl);
sl.each(function(){
p.append(this);
flux.append(this._flux);
});
sl.filter('.'+this._parent.slideActive).removeClass(this._parent.slideActive);
sl.eq(0).addClass(this._parent.slideActive);
}
});
})(njQuery, window);
(function($){ $(document).ready(function() {}); })(njQuery);