PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/home/jaibharticollegehmr.in/www/wp-content/plugins/responsive-lightbox/assets/slippry/
Upload File :
Current File : /home/jaibharticollegehmr.in/www/wp-content/plugins/responsive-lightbox/assets/slippry/slippry.js
/** @preserve
 *
 * slippry v1.4.0 - Responsive content slider for jQuery
 * http://slippry.com
 *
 * Authors: Lukas Jakob Hafner - @saftsaak
 *          Thomas Hurd - @SeenNotHurd
 *
 * Copyright 2016, booncon oy - http://booncon.com
 *
 *
 * Released under the MIT license - http://opensource.org/licenses/MIT
 */

( function ( $ ) {
	"use strict";
	var defaults;

	defaults = {
		// general elements & wrapper
		slippryWrapper: '<div class="sy-box" />', // wrapper to wrap everything, including pager
		slideWrapper: '<div class="sy-slides-wrap" />', // wrapper to wrap sildes & controls
		slideCrop: '<div class="sy-slides-crop" />', //additional wrapper around just the slides
		boxClass: 'sy-list', // class that goes to original element
		elements: 'li', // elments cointaining slide content
		activeClass: 'sy-active', // class for current slide
		fillerClass: 'sy-filler', // class for element that acts as intrinsic placholder
		loadingClass: 'sy-loading',

		// options
		adaptiveHeight: true, // height of the sliders adapts to current slide
		start: 1, // num (starting from 1), random
		loop: true, // first -> last & last -> first arrows
		captionsSrc: 'img', // img, el [img takes caption from alt or title, el from title of slide element]
		captions: 'overlay', // Position: overlay, below, custom, false
		captionsEl: '.sy-caption', // $ selector for captions wrapper
		initSingle: true, // initialise even if there is only one slide
		responsive: true,
		preload: 'visible', // visible, all | resources to wait for until showing slider

		// pager
		pager: true,
		pagerClass: 'sy-pager',

		// controls
		controls: true,
		controlClass: 'sy-controls',
		prevClass: 'sy-prev',
		prevText: 'Previous',
		nextClass: 'sy-next',
		nextText: 'Next',
		hideOnEnd: true,

		// transitions
		transition: 'fade', // fade, horizontal, vertical, kenburns, false
		kenZoom: 120, // max zoom for kenburns (in %)
		slideMargin: 0, // spacing between slides (in %)
		transClass: 'transition', // [Class applied to [element] while a transition is taking place.]
		speed: 800, // time the transition takes (ms)
		easing: 'swing', // easing to use in the animation [(see... [jquery www])]
		continuous: true, // seamless first/ last transistion, only works with loop
		useCSS: true, // true, false -> fallback to js if no browser support

		//slideshow
		auto: true,
		autoDirection: 'next',
		autoHover: true,
		autoHoverDelay: 100,
		autoDelay: 500,
		pause: 4000,

		// callback functions
		onSliderLoad: function () { // when slider loaded
			return this;
		},
		onSlideBefore: function () { // before page transition starts
			return this;
		},
		onSlideAfter: function () {  // after page transition happened
			return this;
		}
	};

	$.fn.slippry = function ( options ) {
		var slip, el, prepareFiller, getFillerProportions, init, updateCaption, initPager, initControls, ready, transitionDone, whichTransitionEvent,
			initCaptions, updatePager, setFillerProportions, doTransition, updateSlide, openSlide, updateControls, updatePos, supports, preload, start, elFromSel, doKens;

		// reference to the object calling the function
		el = this;

		// if no elements just stop
		if ( el.length === 0 ) {
			return this;
		}
		// support mutltiple elements
		if ( el.length > 1 ) {
			el.each( function () {
				$( this ).slippry( options );
			} );
			return this;
		}

		// variable to access the slider settings across the plugin
		slip = { };
		slip.vars = { };

		whichTransitionEvent = function () { // Thanks! http://stackoverflow.com/a/18672988
			var t, div, transitions;
			div = document.createElement( 'div' );
			transitions = {
				'WebkitTransition': 'webkitTransitionEnd',
				'MozTransition': 'transitionend',
				'MSTransition': 'msTransitionEnd',
				'OTransition': 'oTransitionEnd',
				'transition': 'transitionEnd transitionend'
			};
			for ( t in transitions ) {
				if ( div.style[t] !== undefined ) {
					return transitions[t];
				}
			}
		};

		supports = ( function () {  // Thanks! http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-detect-css-support-in-browsers-with-javascript/
			var div = document.createElement( 'div' ),
				vendors = [ 'Khtml', 'Ms', 'O', 'Moz', 'Webkit' ],
				len = vendors.length;
			return function ( prop ) {
				if ( prop in div.style ) {
					return true;
				}
				prop = prop.replace( /^[a-z]/, function ( val ) {
					return val.toUpperCase();
				} );
				while ( len-- ) {
					if ( vendors[len] + prop in div.style ) {
						return true;
					}
				}
				return false;
			};
		}() );

		elFromSel = function ( sel, prop ) {
			var props, newelement, id, className;
			props = prop.split( '.' );
			newelement = $( sel );
			id = '';
			className = '';
			$.each( props, function ( i, val ) {
				if ( val.indexOf( '#' ) >= 0 ) {
					id += val.replace( /^#/, '' );
				} else {
					className += val + ' ';
				}
			} );
			if ( id.length ) {
				newelement.attr( 'id', id );
			}
			if ( className.length ) {
				newelement.attr( 'class', className.trim() );
			}
			return newelement;
		};

		doKens = function () {
			var kenStart, kenTime, animProp, cssProp;
			animProp = { };
			cssProp = { };
			kenStart = 100 - slip.settings.kenZoom;
			cssProp.width = slip.settings.kenZoom + '%';
			if ( slip.vars.active.index() % 2 === 0 ) {
				cssProp.left = kenStart + '%';
				cssProp.top = kenStart + '%';
				animProp.left = '0%';
				animProp.top = '0%';
			} else {
				cssProp.left = '0%';
				cssProp.top = '0%';
				animProp.left = kenStart + '%';
				animProp.top = kenStart + '%';
			}
			kenTime = slip.settings.pause + slip.settings.speed * 2;
			slip.vars.active.css( cssProp );
			slip.vars.active.animate( animProp, { duration: kenTime, easing: slip.settings.easing, queue: false } );
		};

		ready = function () {
			if ( slip.vars.fresh ) {
				slip.vars.slippryWrapper.removeClass( slip.settings.loadingClass );
				slip.vars.fresh = false;
				if ( slip.settings.auto ) {
					el.startAuto();
				}
				if ( !slip.settings.useCSS && slip.settings.transition === 'kenburns' ) {
					doKens();
				}
				slip.settings.onSliderLoad.call( undefined, slip.vars.active.index() );
			} else {
				$( '.' + slip.settings.fillerClass, slip.vars.slideWrapper ).addClass( 'ready' );
			}
		};

		setFillerProportions = function ( width, height ) {
			var ratio, p_top, $filler;
			ratio = width / height;
			p_top = 1 / ratio * 100 + '%';  //cool intrinsic trick: http://alistapart.com/article/creating-intrinsic-ratios-for-video
			$filler = $( '.' + slip.settings.fillerClass, slip.vars.slideWrapper );
			$filler.css( { paddingTop: p_top } ); // resizing without the need of js, true responsiveness :)
			ready();
		};

		// gets the aspect ratio of the filler element
		getFillerProportions = function ( $slide ) {
			var width, height;
			if ( ( $( 'img', $slide ).attr( "src" ) !== undefined ) ) {
				$( "<img />" ).on( "load", function () {
					width = $slide.width();
					height = $slide.height();
					setFillerProportions( width, height );
				} ).attr( "src", $( 'img', $slide ).attr( "src" ) );
			} else {
				width = $slide.width();
				height = $slide.height();
				setFillerProportions( width, height );
			}
		};

		// prepares a div to occupy the needed space
		prepareFiller = function () {
			if ( $( '.' + slip.settings.fillerClass, slip.vars.slideWrapper ).length === 0 ) {
				slip.vars.slideWrapper.append( $( '<div class="' + slip.settings.fillerClass + '" />' ) );
			}
			if ( slip.settings.adaptiveHeight === true ) {  // if the slides shoud alwas adapt to their content
				getFillerProportions( $( '.' + slip.settings.activeClass, el ) );  // set the filler height on the active element
			} else {  // otherwise get the highest element
				var $highest, height, loop;
				height = 0;
				loop = 0;
				$( slip.vars.slides ).each( function () {
					if ( $( this ).height() > height ) {
						$highest = $( this );
						height = $highest.height();
					}
					loop = loop + 1;
					if ( loop === slip.vars.count ) {
						if ( $highest === undefined ) {
							$highest = $( $( slip.vars.slides )[0] );
						}
						getFillerProportions( $highest );
					}
				} );
			}
		};

		updatePager = function () {
			if ( slip.settings.pager ) {
				$( '.' + slip.settings.pagerClass + ' li', slip.vars.slippryWrapper ).removeClass( slip.settings.activeClass );
				$( $( '.' + slip.settings.pagerClass + ' li', slip.vars.slippryWrapper )[slip.vars.active.index()] ).addClass( slip.settings.activeClass );
			}
		};

		updateControls = function () {
			if ( !slip.settings.loop && slip.settings.hideOnEnd ) {
				$( '.' + slip.settings.prevClass, slip.vars.slippryWrapper )[slip.vars.first ? 'hide' : 'show']();
				$( '.' + slip.settings.nextClass, slip.vars.slippryWrapper )[slip.vars.last ? 'hide' : 'show']();
			}
		};

		updateCaption = function () {
			var caption, wrapper;
			if ( slip.settings.captions !== false ) {
				if ( slip.settings.captionsSrc !== 'img' ) {
					caption = slip.vars.active.attr( 'title' );
				} else {
					caption = $( 'img', slip.vars.active ).attr( 'title' ) !== undefined ? $( 'img', slip.vars.active ).attr( 'title' ) : $( 'img', slip.vars.active ).attr( 'alt' );
				}
				if ( slip.settings.captions !== 'custom' ) {
					wrapper = $( slip.settings.captionsEl, slip.vars.slippryWrapper );
				} else {
					wrapper = $( slip.settings.captionsEl );
				}
				if ( ( caption !== undefined ) && ( caption !== '' ) ) {
					wrapper.html( caption ).show();
				} else {
					wrapper.hide();
				}
			}
		};

		el.startAuto = function () {
			if ( ( slip.vars.timer === undefined ) && ( slip.vars.delay === undefined ) ) {
				slip.vars.delay = window.setTimeout( function () {
					slip.vars.autodelay = false;
					slip.vars.timer = window.setInterval( function () {
						slip.vars.trigger = 'auto';
						openSlide( slip.settings.autoDirection );
					}, slip.settings.pause );
				}, slip.vars.autodelay ? slip.settings.autoHoverDelay : slip.settings.autoDelay );
				if ( slip.settings.autoHover ) {
					slip.vars.slideWrapper.off( 'mouseenter' ).off( 'mouseleave' ).on( 'mouseenter', function () {
						if ( slip.vars.timer !== undefined ) {
							slip.vars.hoverStop = true;
							el.stopAuto();
						} else {
							slip.vars.hoverStop = false;
						}
					} ).on( 'mouseleave', function () {
						if ( slip.vars.hoverStop ) {
							slip.vars.autodelay = true;
							el.startAuto();
						}
					} );
				}
			}
		};

		el.stopAuto = function () {
			window.clearInterval( slip.vars.timer );
			slip.vars.timer = undefined;
			window.clearTimeout( slip.vars.delay );
			slip.vars.delay = undefined;
		};

		// refreshes the already initialised slider
		el.refresh = function () {
			slip.vars.slides.removeClass( slip.settings.activeClass );
			slip.vars.active.addClass( slip.settings.activeClass );
			if ( slip.settings.responsive ) {
				prepareFiller();
			} else {
				ready();
			}
			updateControls();
			updatePager();
			updateCaption();
		};

		updateSlide = function () {
			el.refresh();
		};

		transitionDone = function () {
			slip.vars.moving = false;
			slip.vars.active.removeClass( slip.settings.transClass );
			if ( !slip.vars.fresh ) {
				slip.vars.old.removeClass( 'sy-ken' );
			}
			slip.vars.old.removeClass( slip.settings.transClass );
			slip.settings.onSlideAfter.call( undefined, slip.vars.active, slip.vars.old.index(), slip.vars.active.index() );
			if ( slip.settings.auto ) {
				if ( !slip.vars.hoverStop || slip.vars.hoverStop === undefined ) {
					el.startAuto();
				}
			}
		};

		doTransition = function () {
			var pos, jump, old_left, old_pos, kenTime, ref, cssProp;
			slip.settings.onSlideBefore.call( undefined, slip.vars.active, slip.vars.old.index(), slip.vars.active.index() );
			if ( slip.settings.transition !== false ) {
				slip.vars.moving = true;
				if ( ( slip.settings.transition === 'fade' ) || ( slip.settings.transition === 'kenburns' ) ) {
					if ( slip.vars.fresh ) {
						if ( slip.settings.useCSS ) {
							slip.vars.slides.css( { transitionDuration: slip.settings.speed + 'ms', opacity: 0 } );
						} else {
							slip.vars.slides.css( { opacity: 0 } );
						}
						slip.vars.active.css( 'opacity', 1 );
						if ( slip.settings.transition === 'kenburns' ) {
							if ( slip.settings.useCSS ) {
								kenTime = slip.settings.pause + slip.settings.speed * 2;
								slip.vars.slides.css( { animationDuration: kenTime + 'ms' } );
								slip.vars.active.addClass( 'sy-ken' );
							}
						}
						transitionDone();
					} else {
						if ( slip.settings.useCSS ) {
							slip.vars.old.addClass( slip.settings.transClass ).css( 'opacity', 0 );
							slip.vars.active.addClass( slip.settings.transClass ).css( 'opacity', 1 );
							if ( slip.settings.transition === 'kenburns' ) {
								slip.vars.active.addClass( 'sy-ken' );
							}
							$( window ).off( 'focus' ).on( 'focus', function () { // bugfix for safari 7 which doesn't always trigger ontransitionend when switching tab
								if ( slip.vars.moving ) {
									slip.vars.old.trigger( slip.vars.transition );
								}
							} );
							slip.vars.old.one( slip.vars.transition, function () {
								transitionDone();
								return this;
							} );
						} else {
							if ( slip.settings.transition === 'kenburns' ) {
								doKens();
							}
							slip.vars.old.addClass( slip.settings.transClass ).animate( {
								opacity: 0
							}, slip.settings.speed, slip.settings.easing, function () {
								transitionDone();
							} );
							slip.vars.active.addClass( slip.settings.transClass ).css( 'opacity', 0 ).animate( {
								opacity: 1
							}, slip.settings.speed, slip.settings.easing );
						}
					}
					updateSlide();
				} else if ( ( slip.settings.transition === 'horizontal' ) || ( slip.settings.transition === 'vertical' ) ) {
					ref = ( slip.settings.transition === 'horizontal' ) ? 'left' : 'top';
					pos = '-' + slip.vars.active.index() * ( 100 + slip.settings.slideMargin ) + '%';
					if ( slip.vars.fresh ) {
						el.css( ref, pos );
						transitionDone();
					} else {
						cssProp = { };
						if ( slip.settings.continuous ) {
							if ( slip.vars.jump && ( ( slip.vars.trigger === 'controls' ) || ( slip.vars.trigger === 'auto' ) ) ) {
								jump = true;
								old_pos = pos;
								if ( slip.vars.first ) {
									old_left = 0;
									slip.vars.active.css( ref, slip.vars.count * ( 100 + slip.settings.slideMargin ) + '%' );
									pos = '-' + slip.vars.count * ( 100 + slip.settings.slideMargin ) + '%';
								} else {
									old_left = ( slip.vars.count - 1 ) * ( 100 + slip.settings.slideMargin ) + '%';
									slip.vars.active.css( ref, -( 100 + slip.settings.slideMargin ) + '%' );
									pos = ( 100 + slip.settings.slideMargin ) + '%';
								}
							}
						}
						slip.vars.active.addClass( slip.settings.transClass );
						if ( slip.settings.useCSS ) {
							cssProp[ref] = pos;
							cssProp.transitionDuration = slip.settings.speed + 'ms';
							el.addClass( slip.settings.transition );
							el.css( cssProp );
							$( window ).off( 'focus' ).on( 'focus', function () { // bugfix for safari 7 which doesn't always trigger ontransitionend when switching tab
								if ( slip.vars.moving ) {
									el.trigger( slip.vars.transition );
								}
							} );
							el.one( slip.vars.transition, function () {
								el.removeClass( slip.settings.transition );
								if ( jump ) {
									slip.vars.active.css( ref, old_left );
									cssProp[ref] = old_pos;
									cssProp.transitionDuration = '0ms';
									el.css( cssProp );
								}
								transitionDone();
								return this;
							} );
						} else {
							cssProp[ref] = pos;
							el.stop().animate( cssProp, slip.settings.speed, slip.settings.easing, function () {
								if ( jump ) {
									slip.vars.active.css( ref, old_left );
									el.css( ref, old_pos );
								}
								transitionDone();
								return this;
							} );
						}
					}
					updateSlide();
				}
			} else {
				updateSlide();
				transitionDone();
			}
		};

		updatePos = function ( slide ) {
			slip.vars.first = slip.vars.last = false;
			if ( ( slide === 'prev' ) || ( slide === 0 ) ) {
				slip.vars.first = true;
			} else if ( ( slide === 'next' ) || ( slide === slip.vars.count - 1 ) ) {
				slip.vars.last = true;
			}
		};

		openSlide = function ( slide ) {
			var current, direction;
			if ( !slip.vars.moving ) {
				if ( slip.vars.trigger !== 'auto' ) {
					el.stopAuto();
				}
				current = slip.vars.active.index();
				if ( slide === 'prev' ) {
					direction = slide;
					if ( current > 0 ) {
						slide = current - 1;
					} else if ( slip.settings.loop ) {
						slide = slip.vars.count - 1;
					}
				} else if ( slide === 'next' ) {
					direction = slide;
					if ( current < slip.vars.count - 1 ) {
						slide = current + 1;
					} else if ( slip.settings.loop ) {
						slide = 0;
					}
				} else {
					slide = slide - 1;
					direction = slide < current ? 'prev' : 'next';
				}
				slip.vars.jump = false;
				if ( ( slide !== 'prev' ) && ( slide !== 'next' ) && ( ( slide !== current ) || ( slip.vars.fresh ) ) ) {
					updatePos( slide );
					slip.vars.old = slip.vars.active;
					slip.vars.active = $( slip.vars.slides[slide] );
					if ( ( ( current === 0 ) && ( direction === 'prev' ) ) || ( ( current === slip.vars.count - 1 ) && ( direction === 'next' ) ) ) {
						slip.vars.jump = true;
					}
					doTransition();
				}
			}
		};

		el.goToSlide = function ( slide ) {
			slip.vars.trigger = 'external';
			openSlide( slide );
		};

		el.goToNextSlide = function () {
			slip.vars.trigger = 'external';
			openSlide( 'next' );
		};

		el.goToPrevSlide = function () {
			slip.vars.trigger = 'external';
			openSlide( 'prev' );
		};

		initPager = function () {
			if ( ( slip.settings.pager ) && ( slip.vars.count > 1 ) ) {
				var count, loop, pager;
				count = slip.vars.slides.length;
				pager = $( '<ul class="' + slip.settings.pagerClass + '" />' );
				for ( loop = 1; loop < count + 1; loop = loop + 1 ) {
					pager.append( $( '<li />' ).append( $( '<a href="#' + loop + '">' + loop + '</a>' ) ) );
				}
				slip.vars.slippryWrapper.append( pager );
				$( '.' + slip.settings.pagerClass + ' a', slip.vars.slippryWrapper ).on( 'click', function () {
					slip.vars.trigger = 'pager';
					openSlide( parseInt( this.hash.split( '#' )[1], 10 ) );
					return false;
				} );
				updatePager();
			}
		};

		initControls = function () {
			if ( ( slip.settings.controls ) && ( slip.vars.count > 1 ) ) {
				slip.vars.slideWrapper.append(
					$( '<ul class="' + slip.settings.controlClass + '" />' )
					.append( '<li class="' + slip.settings.prevClass + '"><a href="#prev">' + slip.settings.prevText + '</a></li>' )
					.append( '<li class="' + slip.settings.nextClass + '"><a href="#next">' + slip.settings.nextText + '</a></li>' )
					);
				$( '.' + slip.settings.controlClass + ' a', slip.vars.slippryWrapper ).on( 'click', function () {
					slip.vars.trigger = 'controls';
					openSlide( this.hash.split( '#' )[1] );
					return false;
				} );
				updateControls();
			}
		};

		initCaptions = function () {
			if ( slip.settings.captions !== false ) {
				if ( slip.settings.captions === 'overlay' ) {
					slip.vars.slideWrapper.append( $( '<div class="sy-caption-wrap" />' ).html( elFromSel( '<div />', slip.settings.captionsEl ) ) );
				} else if ( slip.settings.captions === 'below' ) {
					slip.vars.slippryWrapper.append( $( '<div class="sy-caption-wrap" />' ).html( elFromSel( '<div />', slip.settings.captionsEl ) ) );
				}
			}
		};

		// actually show the first slide
		start = function () {
			openSlide( slip.vars.active.index() + 1 );
		};

		// wait for images, iframes to be loaded
		preload = function ( slides ) {
			var count, loop, elements, container;
			container = ( slip.settings.preload === 'all' ) ? slides : slip.vars.active;
			elements = $( 'img, iframe', container );
			count = elements.length;
			if ( count === 0 ) {
				start();
				return;
			}
			loop = 0;
			elements.each( function () {
				$( this ).one( 'load error', function () {
					if ( ++loop === count ) {
						start();
					}
				} ).each( function () {
					if ( this.complete ) {
						$( this ).trigger( 'load' );
					}
				} );
			} );
		};

		el.getCurrentSlide = function () {
			return slip.vars.active;
		};

		el.getSlideCount = function () {
			return slip.vars.count;
		};

		el.destroySlider = function () {
			if ( slip.vars.fresh === false ) {
				el.stopAuto();
				slip.vars.moving = false;
				slip.vars.slides.each( function () {
					if ( $( this ).data( "sy-cssBckup" ) !== undefined ) {
						$( this ).attr( "style", $( this ).data( "sy-cssBckup" ) );
					} else {
						$( this ).removeAttr( 'style' );
					}
					if ( $( this ).data( "sy-classBckup" ) !== undefined ) {
						$( this ).attr( "class", $( this ).data( "sy-classBckup" ) );
					} else {
						$( this ).removeAttr( 'class' );
					}
				} );
				if ( el.data( "sy-cssBckup" ) !== undefined ) {
					el.attr( "style", el.data( "sy-cssBckup" ) );
				} else {
					el.removeAttr( 'style' );
				}
				if ( el.data( "sy-classBckup" ) !== undefined ) {
					el.attr( "class", el.data( "sy-classBckup" ) );
				} else {
					el.removeAttr( 'class' );
				}
				slip.vars.slippryWrapper.before( el );
				slip.vars.slippryWrapper.remove();
				slip.vars.fresh = undefined;
			}
		};

		el.reloadSlider = function () {
			el.destroySlider();
			init();
		};

		// initialises the slider, creates needed markup
		init = function () {
			var first;
			slip.settings = $.extend( { }, defaults, options );
			slip.vars.slides = $( slip.settings.elements, el );
			slip.vars.count = slip.vars.slides.length;
			if ( slip.settings.useCSS ) { // deactivate css transitions on unsupported browsers
				if ( !supports( 'transition' ) ) {
					slip.settings.useCSS = false;
				}
				slip.vars.transition = whichTransitionEvent();
			}
			el.data( 'sy-cssBckup', el.attr( 'style' ) );
			el.data( 'sy-classBackup', el.attr( 'class' ) );
			el.addClass( slip.settings.boxClass ).wrap( slip.settings.slippryWrapper ).wrap( slip.settings.slideWrapper ).wrap( slip.settings.slideCrop );
			slip.vars.slideWrapper = el.parent().parent();
			slip.vars.slippryWrapper = slip.vars.slideWrapper.parent().addClass( slip.settings.loadingClass );
			slip.vars.fresh = true;
			slip.vars.slides.each( function () {
				$( this ).addClass( 'sy-slide ' + slip.settings.transition );
				if ( slip.settings.useCSS ) {
					$( this ).addClass( 'useCSS' );
				}
				if ( slip.settings.transition === 'horizontal' ) {
					$( this ).css( 'left', $( this ).index() * ( 100 + slip.settings.slideMargin ) + '%' );
				} else if ( slip.settings.transition === 'vertical' ) {
					$( this ).css( 'top', $( this ).index() * ( 100 + slip.settings.slideMargin ) + '%' );
				}
			} );
			if ( ( slip.vars.count > 1 ) || ( slip.settings.initSingle ) ) {
				if ( $( '.' + slip.settings.activeClass, el ).index() === -1 ) {
					if ( slip.settings.start === 'random' ) {
						first = Math.round( Math.random() * ( slip.vars.count - 1 ) );
					} else if ( slip.settings.start > 0 && slip.settings.start <= slip.vars.count ) {
						first = slip.settings.start - 1;
					} else {
						first = 0;
					}
					slip.vars.active = $( slip.vars.slides[first] ).addClass( slip.settings.activeClass );
				} else {
					slip.vars.active = $( '.' + slip.settings.activeClass, el );
				}
				initControls();
				initPager();
				initCaptions();
				preload( slip.vars.slides );
			} else {
				return this;
			}
		};

		init(); // on startup initialise the slider

		return this;
	};
}( jQuery ) );