From 68a9e040bf3beeab4ef2ed79e6a4849812713d2e Mon Sep 17 00:00:00 2001 From: tulios Date: Sun, 9 Dec 2012 23:15:34 -0200 Subject: [PATCH 01/34] migration example page --- img/arrows.png | Bin 0 -> 6538 bytes index.html | 241 +++++++++++++++++++++++++++++++++++++++++++++++++ script.js | 16 ++++ style.css | 217 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 474 insertions(+) create mode 100644 img/arrows.png create mode 100644 index.html create mode 100644 script.js create mode 100644 style.css diff --git a/img/arrows.png b/img/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8e96b8e49ffdc18b4e00270f34c4396561967e GIT binary patch literal 6538 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 O0`# + + + + Example - jQuery SilverTrack + + + + + + + + + + + + +
+

jQuery SilverTrack

+
+ +
+
+

Basic

+
+
+ +

Trailer 1

+
+
+ +

Trailer 2

+
+
+ +

Trailer 3

+
+
+ +

Trailer 4

+
+
+ +

Trailer 5

+
+
+ +

Trailer 6

+
+
+ +

Trailer 7

+
+
+ +

Trailer 8

+
+
+ +

Trailer 9

+
+
+
+ +
+ +
+
+

Cover 1

+
+
+ +
+
+ +
+
+ +
+
+
+
+ Carly Rose Takes on Bieber +
+
+ The X Factor unplugged the Top 6 finalists and then had them take requests from the audience. At the top: Carly Rose Sonenclair with Justin Bieber's "As Long As You Love Me." +
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+ +
+
+

Cover 2

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..85203c2 --- /dev/null +++ b/script.js @@ -0,0 +1,16 @@ +jQuery(function() { + + $(".slider-container").each(function() { + var example = $(this); + var hasCover = example.hasClass("big") || example.hasClass("huge"); + + var track = example.silverTrack({cover: hasCover}); + track.install(new SilverTrack.Navigator({ + prev: $("a.prev", example.parent().parent()), + next: $("a.next", example.parent().parent()) + })); + + track.start(); + }); + +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..289e0f1 --- /dev/null +++ b/style.css @@ -0,0 +1,217 @@ +body { + margin: 0; + padding: 0; +} + +h2 { + padding: 0; + margin: 0 0 10px 0; +} + +.head { + padding: 30px 0; + width: 960px; + margin: auto; +} + +.head h1 { + font-weight: 200; + font-family: Helvetica,Arial,Verdana,sans-serif; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); + text-transform: uppercase; + color: #999; +} + +.track { + width: 100%; + position: relative; +} + +.view-port { + width: 946px; + overflow: hidden; + margin: auto; + margin-bottom: 30px; + + background: #F1F1F1; + padding: 10px; + border-radius: 4px; +} + +.view-port h2 { + font-weight: 200; + font-family: Helvetica,Arial,Verdana,sans-serif; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); + text-transform: uppercase; + color: #999; +} + +.view-port h2:hover { + color: #6A3; +} + +.track a.prev, .track a.next { + display: block; + position: absolute; + top: 50%; + margin-top: -32px; + width: 64px; + height: 64px; + background: url("img/arrows.png"); + background-repeat: no-repeat; +} + +.track a.prev.disabled, .track a.next.disabled { + display: none; +} + +.track a.prev { + left: 0; + background-position: 0 0; +} + +.track a.prev:hover { + background-position: 0 -66px; +} + +.track a.prev:active { + background-position: 0 -132px; +} + +.track a.next { + right: 0; + background-position: -64px 0; +} + +.track a.next:hover { + background-position: -64px -132px; +} + +.track a.next:active { + background-position: -64px -198px; +} + +.slider-container { + position: relative; + margin: 0; + padding: 0; + + height: 150px; +} + +.slider-container.big { + height: 288px; +} + +.slider-container.huge { + height: 432px; +} + +.slider-container .item { + position: absolute; + + width: 224px; + height: 150px; + + margin-right: 16px; + margin-bottom: 16px; +} + +.slider-container .item img { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 2px solid white; +} + +.slider-container.big .item, +.slider-container.big .item .img-area { + height: 288px; +} + +.slider-contaiber.huge .item { + margin-bottom: 12px; +} + +.slider-container .item p { + padding: 0; + margin: 0; +} + +.slider-container .item.cover { + width: 940px; +} + +.slider-container .item.cover-2 { + height: 432px; +} + +.slider-container .item.cover img { + float: left; +} + +.slider-container .item.cover-2 img { + float: none; +} + +.slider-container .item.cover .img-area { + float: right; + margin-left: 16px; +} + +.slider-container .item.cover-2 .img-area { + float: none; + margin-left: 0; + margin-top: 12px; +} + +.slider-container .item.cover-2 .img-area .img-block:first-child { + margin-right: 14px; +} + +.slider-container .item.cover .img-block { + height: 128px; +} + +.slider-container .item.cover-2 .img-block { + float: left; +} + +.img-block { + margin-bottom: 16px; +} + +.editorial { + float: right; + width: 200px; + + padding-right: 20px; + height: 272px; + background: white; +} + +.editorial .title { + font-size: 24px; + margin: 20px 0 0 20px; +} + +.editorial .desc { + font-size: 14px; + line-height: 18px; + padding-top: 8px; + margin-left: 20px; +} + +.side-a, .side-b { + float: left; + width: 462px; +} + +.side-a { + margin-right: 16px; +} + +.side-a > img, .side-b > img { + width: 462px; + height: 272px; +} From 320220e40e3d335fdb6f137909f6b3999210e815 Mon Sep 17 00:00:00 2001 From: tulios Date: Sun, 9 Dec 2012 23:21:23 -0200 Subject: [PATCH 02/34] updating silver track url --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index c56e04d..4464592 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,8 @@ - - + + From e66e71360865cfcf98a1473f97839336a9d879f0 Mon Sep 17 00:00:00 2001 From: tulios Date: Sun, 9 Dec 2012 23:28:06 -0200 Subject: [PATCH 03/34] adding view on github link --- img/blacktocat.png | Bin 0 -> 1428 bytes index.html | 2 ++ style.css | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 img/blacktocat.png diff --git a/img/blacktocat.png b/img/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..6e264fe57a2e35a2855405ac7d4102c3f6ddcdae GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=eg`=5?o13Glvx}*rp{t>#shg3DvyriZv5}jZ ztD`wguSMv>2~2MaLa!4}y`ZF!TL84#CABECEH%ZgC_h&L>}9J=EN(GzcCm0X zaRr%YgxxI=y(w7S0@dq`Q?EYIG5Vm0MT%&c5HR(CnDAr^T6f1avxRvmvnsN+?-j}Z~1)Zr#rqzrt`edmo44*B<0=C4>mrxHF6$p zVws~UocMfeI`gB8pYMLYT<5W_Sc2L3k=!bUB#~ZJ({Z!h( z5cQ^m-ML}np}?nF1qJ%QZ%&+4qx_-u5%b!7*Mwh!%GW0DVVfR1^AmT&2Zx^5+9#_y zVl?bOyxwefi2JC5G4th=kQ;{6OD@}K%_vt2<#@BBJ27y#@Q%c)SuYG()&<;F38thq0oZ=U&WuIgkD`^dLEH(#C<*XLIlWZ+j~E zz+=Y;?pdE$&$m3i@NdO#%>zA87`NOI2w2B*JM5L`^AkN4AFQu&S+6ULTPjv;vzl4& z-eaK_F|D4~l3hzBSF~icNT@MID=v+_X`vpuvf=8+S(|^vlRdHe0<)v-^wiVR3w=TQ)uFA9F z>vmq + View on GitHub +

jQuery SilverTrack

diff --git a/style.css b/style.css index 289e0f1..26a19a6 100644 --- a/style.css +++ b/style.css @@ -8,6 +8,22 @@ h2 { margin: 0 0 10px 0; } +#forkme_banner { + display: block; + position: absolute; + top: 0; + right: 10px; + z-index: 10; + padding: 10px 50px 10px 10px; + color: white; + background: url("img/blacktocat.png") #6A3 no-repeat 95% 50%; + font-weight: 700; + box-shadow: 0 0 10px rgba(0, 0, 0, .5); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + text-decoration: none; +} + .head { padding: 30px 0; width: 960px; From 3590a769355ae6a4bcee16cf1f74544e2b486b18 Mon Sep 17 00:00:00 2001 From: tulios Date: Mon, 10 Dec 2012 20:57:56 -0200 Subject: [PATCH 04/34] updating gh-pages --- gh-buttons.css | 401 +++++++++++++++++++++++++++++++++++++++++++++++ img/gh-icons.png | Bin 0 -> 3948 bytes index.html | 10 ++ script.js | 5 + style.css | 4 + 5 files changed, 420 insertions(+) create mode 100644 gh-buttons.css create mode 100644 img/gh-icons.png diff --git a/gh-buttons.css b/gh-buttons.css new file mode 100644 index 0000000..77cac09 --- /dev/null +++ b/gh-buttons.css @@ -0,0 +1,401 @@ +/* ------------------------------------------ + * CSS3 GITHUB BUTTONS (Nicolas Gallagher) + * Licensed under Unlicense + * http://github.com/necolas/css3-github-buttons + * --------------------------------------- */ + + +/* ============================================================================= + Base Button + ========================================================================== */ + +.button { + position: relative; + overflow: visible; + display: inline-block; + padding: 0.5em 1em; + border: 1px solid #d4d4d4; + margin: 0; + text-decoration: none; + text-align: center; + text-shadow: 1px 1px 0 #fff; + font:11px/normal sans-serif; + color: #333; + white-space: nowrap; + cursor: pointer; + outline: none; + background-color: #ececec; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec)); + background-image: -moz-linear-gradient(#f4f4f4, #ececec); + background-image: -ms-linear-gradient(#f4f4f4, #ececec); + background-image: -o-linear-gradient(#f4f4f4, #ececec); + background-image: linear-gradient(#f4f4f4, #ececec); + -moz-background-clip: padding; /* for Firefox 3.6 */ + background-clip: padding-box; + border-radius: 0.2em; + /* IE hacks */ + zoom: 1; + *display: inline; +} + +.button:hover, +.button:focus, +.button:active, +.button.active { + border-color: #3072b3; + border-bottom-color: #2a65a0; + text-decoration: none; + text-shadow: -1px -1px 0 rgba(0,0,0,0.3); + color: #fff; + background-color: #3c8dde; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#599bdc), to(#3072b3)); + background-image: -moz-linear-gradient(#599bdc, #3072b3); + background-image: -o-linear-gradient(#599bdc, #3072b3); + background-image: linear-gradient(#599bdc, #3072b3); +} + +.button:active, +.button.active { + border-color: #2a65a0; + border-bottom-color: #3884cd; + background-color: #3072b3; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3072b3), to(#599bdc)); + background-image: -moz-linear-gradient(#3072b3, #599bdc); + background-image: -ms-linear-gradient(#3072b3, #599bdc); + background-image: -o-linear-gradient(#3072b3, #599bdc); + background-image: linear-gradient(#3072b3, #599bdc); +} + +/* overrides extra padding on button elements in Firefox */ +.button::-moz-focus-inner { + padding: 0; + border: 0; +} + + +/* ============================================================================= + Button icons + ========================================================================== */ + +.button.icon:before { + content: ""; + position: relative; + top: 1px; + float:left; + width: 12px; + height: 12px; + margin: 0 0.75em 0 -0.25em; + background: url(img/gh-icons.png) 0 99px no-repeat; +} + +.button.arrowup.icon:before { background-position: 0 0; } +.button.arrowup.icon:hover:before, +.button.arrowup.icon:focus:before, +.button.arrowup.icon:active:before { background-position: -12px 0; } + +.button.arrowdown.icon:before { background-position: 0 -12px; } +.button.arrowdown.icon:hover:before, +.button.arrowdown.icon:focus:before, +.button.arrowdown.icon:active:before { background-position: -12px -12px; } + +.button.arrowleft.icon:before { background-position: 0 -24px; } +.button.arrowleft.icon:hover:before, +.button.arrowleft.icon:focus:before, +.button.arrowleft.icon:active:before { background-position: -12px -24px; } + +.button.arrowright.icon:before { float:right; margin: 0 -0.25em 0 0.5em; background-position: 0 -36px; } +.button.arrowright.icon:hover:before, +.button.arrowright.icon:focus:before, +.button.arrowright.icon:active:before { background-position: -12px -36px; } + +.button.approve.icon:before { background-position: 0 -48px; } +.button.approve.icon:hover:before, +.button.approve.icon:focus:before, +.button.approve.icon:active:before { background-position: -12px -48px; } + +.button.add.icon:before { background-position: 0 -288px; } +.button.add.icon:hover:before, +.button.add.icon:focus:before, +.button.add.icon:active:before { background-position: -12px -288px; } + +.button.remove.icon:before { background-position: 0 -60px; } +.button.remove.icon:hover:before, +.button.remove.icon:focus:before, +.button.remove.icon:active:before { background-position: -12px -60px; } + +.button.log.icon:before { background-position: 0 -72px; } +.button.log.icon:hover:before, +.button.log.icon:focus:before, +.button.log.icon:active:before { background-position: -12px -72px; } + +.button.calendar.icon:before { background-position: 0 -84px; } +.button.calendar.icon:hover:before, +.button.calendar.icon:focus:before, +.button.calendar.icon:active:before { background-position: -12px -84px; } + +.button.chat.icon:before { background-position: 0 -96px; } +.button.chat.icon:hover:before, +.button.chat.icon:focus:before, +.button.chat.icon:active:before { background-position: -12px -96px; } + +.button.clock.icon:before { background-position: 0 -108px; } +.button.clock.icon:hover:before, +.button.clock.icon:focus:before, +.button.clock.icon:active:before { background-position: -12px -108px; } + +.button.settings.icon:before { background-position: 0 -120px; } +.button.settings.icon:hover:before, +.button.settings.icon:focus:before, +.button.settings.icon:active:before { background-position: -12px -120px; } + +.button.comment.icon:before { background-position: 0 -132px; } +.button.comment.icon:hover:before, +.button.comment.icon:focus:before, +.button.comment.icon:active:before { background-position: -12px -132px; } + +.button.fork.icon:before { background-position: 0 -144px; } +.button.fork.icon:hover:before, +.button.fork.icon:focus:before, +.button.fork.icon:active:before { background-position: -12px -144px; } + +.button.like.icon:before { background-position: 0 -156px; } +.button.like.icon:hover:before, +.button.like.icon:focus:before, +.button.like.icon:active:before { background-position: -12px -156px; } + +.button.favorite.icon:before { background-position: 0 -348px; } +.button.favorite.icon:hover:before, +.button.favorite.icon:focus:before, +.button.favorite.icon:active:before { background-position: -12px -348px; } + +.button.home.icon:before { background-position: 0 -168px; } +.button.home.icon:hover:before, +.button.home.icon:focus:before, +.button.home.icon:active:before { background-position: -12px -168px; } + +.button.key.icon:before { background-position: 0 -180px; } +.button.key.icon:hover:before, +.button.key.icon:focus:before, +.button.key.icon:active:before { background-position: -12px -180px; } + +.button.lock.icon:before { background-position: 0 -192px; } +.button.lock.icon:hover:before, +.button.lock.icon:focus:before, +.button.lock.icon:active:before { background-position: -12px -192px; } + +.button.unlock.icon:before { background-position: 0 -204px; } +.button.unlock.icon:hover:before, +.button.unlock.icon:focus:before, +.button.unlock.icon:active:before { background-position: -12px -204px; } + +.button.loop.icon:before { background-position: 0 -216px; } +.button.loop.icon:hover:before, +.button.loop.icon:focus:before, +.button.loop.icon:active:before { background-position: -12px -216px; } + +.button.search.icon:before { background-position: 0 -228px; } +.button.search.icon:hover:before, +.button.search.icon:focus:before, +.button.search.icon:active:before { background-position: -12px -228px; } + +.button.mail.icon:before { background-position: 0 -240px; } +.button.mail.icon:hover:before, +.button.mail.icon:focus:before, +.button.mail.icon:active:before { background-position: -12px -240px; } + +.button.move.icon:before { background-position: 0 -252px; } +.button.move.icon:hover:before, +.button.move.icon:focus:before, +.button.move.icon:active:before { background-position: -12px -252px; } + +.button.edit.icon:before { background-position: 0 -264px; } +.button.edit.icon:hover:before, +.button.edit.icon:focus:before, +.button.edit.icon:active:before { background-position: -12px -264px; } + +.button.pin.icon:before { background-position: 0 -276px; } +.button.pin.icon:hover:before, +.button.pin.icon:focus:before, +.button.pin.icon:active:before { background-position: -12px -276px; } + +.button.reload.icon:before { background-position: 0 -300px; } +.button.reload.icon:hover:before, +.button.reload.icon:focus:before, +.button.reload.icon:active:before { background-position: -12px -300px; } + +.button.rss.icon:before { background-position: 0 -312px; } +.button.rss.icon:hover:before, +.button.rss.icon:focus:before, +.button.rss.icon:active:before { background-position: -12px -312px; } + +.button.tag.icon:before { background-position: 0 -324px; } +.button.tag.icon:hover:before, +.button.tag.icon:focus:before, +.button.tag.icon:active:before { background-position: -12px -324px; } + +.button.trash.icon:before { background-position: 0 -336px; } +.button.trash.icon:hover:before, +.button.trash.icon:focus:before, +.button.trash.icon:active:before { background-position: -12px -336px; } + +.button.user.icon:before { background-position: 0 -360px; } +.button.user.icon:hover:before, +.button.user.icon:focus:before, +.button.user.icon:active:before { background-position: -12px -360px; } + + +/* ============================================================================= + Button extensions + ========================================================================== */ + +/* Primary button + ========================================================================== */ + +.button.primary { + font-weight: bold; +} + +/* Danger button + ========================================================================== */ + +.button.danger { + color: #900; +} + +.button.danger:hover, +.button.danger:focus, +.button.danger:active { + border-color: #b53f3a; + border-bottom-color: #a0302a; + color: #fff; + background-color: #dc5f59; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dc5f59), to(#b33630)); + background-image: -moz-linear-gradient(#dc5f59, #b33630); + background-image: -ms-linear-gradient(#dc5f59, #b33630); + background-image: -o-linear-gradient(#dc5f59, #b33630); + background-image: linear-gradient(#dc5f59, #b33630); +} + +.button.danger:active, +.button.danger.active { + border-color: #a0302a; + border-bottom-color: #bf4843; + background-color: #b33630; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b33630), to(#dc5f59)); + background-image: -moz-linear-gradient(#b33630, #dc5f59); + background-image: -ms-linear-gradient(#b33630, #dc5f59); + background-image: -o-linear-gradient(#b33630, #dc5f59); + background-image: linear-gradient(#b33630, #dc5f59); +} + +/* Pill button + ========================================================================== */ + +.button.pill { + border-radius: 50em; +} + +/* Disabled button + ========================================================================== */ + +.button.disable { + opacity: 0.5; +} + +/* Big button + ========================================================================== */ + +.button.big { + font-size: 14px; +} + +.button.big.icon:before { + top: 0; +} + + +/* ============================================================================= + Button groups + ========================================================================== */ + +/* Standard group + ========================================================================== */ + +.button-group { + display: inline-block; + list-style: none; + padding: 0; + margin: 0; + /* IE hacks */ + zoom: 1; + *display: inline; +} + +.button + .button, +.button + .button-group, +.button-group + .button, +.button-group + .button-group { + margin-left: 15px; +} + +.button-group li { + float: left; + padding: 0; + margin: 0; +} + +.button-group .button { + float: left; + margin-left: -1px; +} + +.button-group > .button:not(:first-child):not(:last-child), +.button-group li:not(:first-child):not(:last-child) .button { + border-radius: 0; +} + +.button-group > .button:first-child, +.button-group li:first-child .button { + margin-left: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.button-group > .button:last-child, +.button-group li:last-child > .button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +/* Minor group + ========================================================================== */ + +.button-group.minor-group .button { + border: 1px solid #d4d4d4; + text-shadow: none; + background-image: none; + background-color: #fff; +} + +.button-group.minor-group .button:hover, +.button-group.minor-group .button:focus { + background-color: #599bdc; +} + +.button-group.minor-group .button:active, +.button-group.minor-group .button.active { + background-color: #3072b3; +} + +.button-group.minor-group .button.icon:before { + opacity: 0.8; +} + +/* ============================================================================= + Button container (mixing buttons and groups, e.g., nav bar) + ========================================================================== */ + +.button-container .button, +.button-container .button-group { + vertical-align: top; +} diff --git a/img/gh-icons.png b/img/gh-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..1c76039d948d1e884436b7c5f297cc3cafe99854 GIT binary patch literal 3948 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 - jQuery SilverTrack + @@ -62,6 +63,9 @@

Basic

Trailer 9

+
+ Restart +
+
+ Restart +
+
+ Restart +
+
@@ -134,6 +136,7 @@

Cover 1

+
@@ -239,6 +242,7 @@

Cover 2

+
diff --git a/script.js b/script.js index 0d894a7..3b320d4 100644 --- a/script.js +++ b/script.js @@ -10,6 +10,10 @@ jQuery(function() { next: $("a.next", example.parent().parent()) })); + track.install(new SilverTrack.Plugins.BulletNavigator({ + container: $(".bullet-pagination", example.parent().parent()) + })); + track.start(); $("a.reload", example.parent()).click(function(e) { diff --git a/style.css b/style.css index 1c96583..19fbdee 100644 --- a/style.css +++ b/style.css @@ -235,3 +235,32 @@ h2 { width: 462px; height: 272px; } + +.bullet-pagination { + width: 100%; + text-align: center; + margin-top: 15px; +} + +.bullet { + display: inline-block; + background: #999; + padding: 4px; + border-radius: 6px; + margin-right: 5px; + opacity: 0.4; + + -webkit-transition: opacity 0.5s linear; + -moz-transition: opacity 0.5s linear; + -ms-transition: opacity 0.5s linear; + -o-transition: opacity 0.5s linear; + transition: opacity 0.5s linear; +} + +.bullet.active { + opacity: 1; +} + +.bullet:last-child { + margin-right: 0; +} From e9d5d9a0120192305d77648053b31fd22b74e685 Mon Sep 17 00:00:00 2001 From: tulios Date: Sat, 22 Dec 2012 01:52:28 -0200 Subject: [PATCH 07/34] updating gh-pages --- gh-buttons.css => css/gh-buttons.css | 2 +- style.css => css/style.css | 25 +++++++++++++-- index.html | 34 +++++++++++++++++--- js/example1.js | 29 ++++++++++++++++++ script.js => js/example2_and_3.js | 14 ++++----- js/example4.js | 46 ++++++++++++++++++++++++++++ js/script.js | 37 ++++++++++++++++++++++ 7 files changed, 172 insertions(+), 15 deletions(-) rename gh-buttons.css => css/gh-buttons.css (99%) rename style.css => css/style.css (91%) create mode 100644 js/example1.js rename script.js => js/example2_and_3.js (57%) create mode 100644 js/example4.js create mode 100644 js/script.js diff --git a/gh-buttons.css b/css/gh-buttons.css similarity index 99% rename from gh-buttons.css rename to css/gh-buttons.css index 77cac09..80787ae 100644 --- a/gh-buttons.css +++ b/css/gh-buttons.css @@ -85,7 +85,7 @@ width: 12px; height: 12px; margin: 0 0.75em 0 -0.25em; - background: url(img/gh-icons.png) 0 99px no-repeat; + background: url(../img/gh-icons.png) 0 99px no-repeat; } .button.arrowup.icon:before { background-position: 0 0; } diff --git a/style.css b/css/style.css similarity index 91% rename from style.css rename to css/style.css index 19fbdee..a3b7cac 100644 --- a/style.css +++ b/css/style.css @@ -16,7 +16,7 @@ h2 { z-index: 10; padding: 10px 50px 10px 10px; color: white; - background: url("img/blacktocat.png") #6A3 no-repeat 95% 50%; + background: url("../img/blacktocat.png") #6A3 no-repeat 95% 50%; font-weight: 700; box-shadow: 0 0 10px rgba(0, 0, 0, .5); border-bottom-left-radius: 2px; @@ -77,7 +77,7 @@ h2 { margin-top: -32px; width: 64px; height: 64px; - background: url("img/arrows.png"); + background: url("../img/arrows.png"); background-repeat: no-repeat; } @@ -264,3 +264,24 @@ h2 { .bullet:last-child { margin-right: 0; } + +#example-4 img { + width: 228px; + height: 132px; +} + +#example-1 a.prev, #example-1 a.next { + top: -61px; +} + +#example-2 a.prev, #example-2 a.next { + top: -58px; +} + +#example-3 a.prev, #example-3 a.next { + top: -53px; +} + +#example-4 a.prev, #example-4 a.next { + top: -43px; +} diff --git a/index.html b/index.html index 97d48cf..b937536 100644 --- a/index.html +++ b/index.html @@ -5,15 +5,19 @@ Example - jQuery SilverTrack - - + + - - + + + - + + + + @@ -21,6 +25,11 @@

jQuery SilverTrack

+ +

+ This is a example page, for full documentation and details, see + The Github README file +

@@ -253,5 +262,20 @@

Cover 2

+
+
+

Remote

+
+
+
+ Restart +
+
+ +
+ diff --git a/js/example1.js b/js/example1.js new file mode 100644 index 0000000..08d2b41 --- /dev/null +++ b/js/example1.js @@ -0,0 +1,29 @@ +//================================================= +// Example 1 - basic track +//================================================= + +jQuery(function() { + + var example = $("#example-1"); + var track = example.silverTrack(); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", example.parent().parent()), + next: $("a.next", example.parent().parent()) + })); + + track.install(new SilverTrack.Plugins.BulletNavigator({ + container: $(".bullet-pagination", example.parent().parent()) + })); + + track.start(); + + //==== + // Extra + //==== + $("a.reload", example.parent()).click(function(e) { + e.preventDefault(); + track.restart(); + }); + +}); diff --git a/script.js b/js/example2_and_3.js similarity index 57% rename from script.js rename to js/example2_and_3.js index 3b320d4..7e62799 100644 --- a/script.js +++ b/js/example2_and_3.js @@ -1,10 +1,14 @@ +//================================================= +// Example 2 and 3 - cover +//================================================= + jQuery(function() { - $(".slider-container").each(function() { + $("#example-2, #example-3").each(function() { + var example = $(this); - var hasCover = example.hasClass("big") || example.hasClass("huge"); + var track = example.silverTrack({cover: true}); - var track = example.silverTrack({cover: hasCover}); track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", example.parent().parent()), next: $("a.next", example.parent().parent()) @@ -16,10 +20,6 @@ jQuery(function() { track.start(); - $("a.reload", example.parent()).click(function(e) { - e.preventDefault(); - track.restart(); - }); }); }); diff --git a/js/example4.js b/js/example4.js new file mode 100644 index 0000000..38e4b60 --- /dev/null +++ b/js/example4.js @@ -0,0 +1,46 @@ +//================================================= +// Example 4 - remote content +//================================================= + +jQuery(function() { + + var example = $("#example-4"); + var track = example.silverTrack(); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", example.parent().parent()), + next: $("a.next", example.parent().parent()) + })); + + track.install(new SilverTrack.Plugins.BulletNavigator({ + container: $(".bullet-pagination", example.parent().parent()) + })); + + track.install(new SilverTrack.Plugins.RemoteContent({ + url: function(page, perPage) { + return SilverTrackExample.urlAjax({page: page, perPage: perPage, totalPages: 5}) + }, + process: function(track, perPage, json) { + var data = json.data; + var array = []; + + for (var i = 0; i < perPage; i++) { + array.push( + $("
", {"class": "item"}). + append($("", {"src": data[i].img_url})). + append($("

", {"text": data[i].title})) + ); + } + + return array; + }, + + updateTotalPages: function(track, json) { + track.updateTotalPages(json.total_pages); + } + })); + + track.start(); + +}); + diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..6f53eef --- /dev/null +++ b/js/script.js @@ -0,0 +1,37 @@ +jQuery(function() { + + window.SilverTrackExample = { + echoServerHost: "http://echo-server.herokuapp.com", + urlAjax: function(opts) { + var json = this.jsonCreator(opts.page, opts.perPage); + return this.urlCreator(json, opts.page, opts.totalPages); + }, + + urlCreator: function(obj, page, totalPages) { + var jsonText = encodeURIComponent(JSON.stringify(obj)); + return this.echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=" + totalPages; + }, + + jsonCreator: function(page, perPage) { + var photoTypes = ["food", "people", "nature", "sports"]; + var items = []; + for (var i = 0; i < perPage; i++) { + items.push({ + img_url: "http://lorempixel.com/224/128/" + photoTypes[i], + title: "Page " + page + " item " + i + }); + } + + return items; + } + } + + $(".slider-container").each(function() { + var example = $(this); + $("a.reload", example.parent()).click(function(e) { + e.preventDefault(); + example.silverTrack().restart(); + }); + }); + +}); From 7c7fcda176a1d14bda6d9b3e622bf1bd1b4391a3 Mon Sep 17 00:00:00 2001 From: tulios Date: Sat, 22 Dec 2012 02:01:49 -0200 Subject: [PATCH 08/34] updating gh-pages --- css/style.css | 20 ++++++++++++-------- index.html | 8 ++++---- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/css/style.css b/css/style.css index a3b7cac..8663261 100644 --- a/css/style.css +++ b/css/style.css @@ -270,18 +270,22 @@ h2 { height: 132px; } -#example-1 a.prev, #example-1 a.next { - top: -61px; +.example-1 a.prev, +.example-1 a.next { + margin-top: -61px; } -#example-2 a.prev, #example-2 a.next { - top: -58px; +.example-2 a.prev, +.example-2 a.next { + margin-top: -58px; } -#example-3 a.prev, #example-3 a.next { - top: -53px; +.example-3 a.prev, +.example-3 a.next { + margin-top: -53px; } -#example-4 a.prev, #example-4 a.next { - top: -43px; +.example-4 a.prev, +.example-4 a.next { + margin-top: -43px; } diff --git a/index.html b/index.html index b937536..7ef9080 100644 --- a/index.html +++ b/index.html @@ -32,7 +32,7 @@

jQuery SilverTrack

-
+

Basic

@@ -84,7 +84,7 @@

Basic

-
+

Cover 1

@@ -156,7 +156,7 @@

Cover 1

-
+

Cover 2

@@ -262,7 +262,7 @@

Cover 2

-
+

Remote

From 5d539fb737b19c5d0313bad0cd7a12bd1e80bb2f Mon Sep 17 00:00:00 2001 From: tulios Date: Sat, 22 Dec 2012 02:06:42 -0200 Subject: [PATCH 09/34] fixing typo --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 7ef9080..6d0c2d5 100644 --- a/index.html +++ b/index.html @@ -27,7 +27,7 @@

jQuery SilverTrack

- This is a example page, for full documentation and details, see + This is an example page, for full documentation and details, see The Github README file

From a3e5fb6ad62979a195359041ce1d1c655068bf11 Mon Sep 17 00:00:00 2001 From: tulios Date: Sat, 22 Dec 2012 15:05:31 -0200 Subject: [PATCH 10/34] updating gh-pages --- css/style.css | 26 ++++++++++++++++++++++++-- index.html | 1 + js/example4.js | 10 +++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/css/style.css b/css/style.css index 8663261..cdde539 100644 --- a/css/style.css +++ b/css/style.css @@ -270,6 +270,28 @@ h2 { height: 132px; } +#example-4 .loading { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: rgba(255, 255, 255, 0.8); + border-radius: 4px; + text-align: center; + line-height: 140px; + padding: 4px 0; + z-index: 1; +} + +#example-4 .loading:before { + content: "loading..."; +} + +.example-4 .bullet { + cursor: default; +} + .example-1 a.prev, .example-1 a.next { margin-top: -61px; @@ -280,12 +302,12 @@ h2 { margin-top: -58px; } -.example-3 a.prev, +.example-3 a.prev, .example-3 a.next { margin-top: -53px; } -.example-4 a.prev, +.example-4 a.prev, .example-4 a.next { margin-top: -43px; } diff --git a/index.html b/index.html index 6d0c2d5..127358c 100644 --- a/index.html +++ b/index.html @@ -267,6 +267,7 @@

Cover 2

Remote

+
diff --git a/js/example4.js b/js/example4.js index 38e4b60..ecd21cc 100644 --- a/js/example4.js +++ b/js/example4.js @@ -20,6 +20,15 @@ jQuery(function() { url: function(page, perPage) { return SilverTrackExample.urlAjax({page: page, perPage: perPage, totalPages: 5}) }, + beforeStart: function(track) { + track.container.append($("
", {"class": "loading"})); + }, + beforeSend: function(track) { + $(".loading", track.container).fadeIn(); + }, + beforeAppend: function(track) { + $(".loading", track.container).fadeOut(); + }, process: function(track, perPage, json) { var data = json.data; var array = []; @@ -43,4 +52,3 @@ jQuery(function() { track.start(); }); - From 2495b10fba4c509fcdb79580aa0d6c8333809f12 Mon Sep 17 00:00:00 2001 From: tulios Date: Sun, 20 Jan 2013 22:00:53 -0200 Subject: [PATCH 11/34] updating example --- css/responsive.css | 348 ++++++++++++++++++++++++++++++++++++++++ css/style.css | 33 ++-- index.html | 369 ++++++++++++++++++++++++------------------- js/example1.js | 38 +++-- js/example2_and_3.js | 34 +++- js/example4.js | 38 ++++- js/script.js | 2 +- 7 files changed, 662 insertions(+), 200 deletions(-) create mode 100644 css/responsive.css diff --git a/css/responsive.css b/css/responsive.css new file mode 100644 index 0000000..afff46c --- /dev/null +++ b/css/responsive.css @@ -0,0 +1,348 @@ +/* Tablet */ +@media only screen and (max-width:980px){ + .head { + width: 730px; + } + + .view-port, + .track .inner, + .slider-container .item.cover { + width: 706px; + } + + .view-port h2 { + font-size: 1.3em; + } + + .slider-container { + height: 130px; + } + + .slider-container .item { + height: 114px; + } + + .slider-container .item, + .slider-container .item img, + .slider-container .item .img-area img, + #example-4 img { + width: 164px; + height: auto; + } + + .slider-container .item.cover > img { + width: 343px; + } + + .slider-container .item.cover .img-area { + margin-left: 10px; + } + + .editorial { + width: 169px; + height: 195px; + } + + .editorial .title { + font-size: 18px; + margin: 10px 0 0 16px; + } + + .editorial .desc { + margin-left: 16px; + font-size: 13px; + } + + .slider-container.big, + .slider-container.big .item { + height: 196px; + } + + .slider-container.big .item .img-area { + height: 196px; + } + + .slider-container .item.cover .img-block, + .img-block { + margin-bottom: 0; + height: 104px; + } + + .side-a, .side-b { + width: 349px; + } + + .side-a { + margin-right: 8px; + } + + .slider-container .item .side-a > img, + .slider-container .item .side-b > img { + width: 343px; + height: auto; + } + + .slider-container .item.cover-2 .img-area { + margin: 9px 0 0 0; + } + + .slider-container .item.cover-2 .img-area .img-block:first-child { + margin-right: 15px; + } + + .slider-container.huge, + .slider-container .item.cover-2 { + height: 300px; + } +} + +/* Small Tablet */ +@media only screen and (max-width:730px){ + .head { + width: 480px; + } + + .view-port, + .track .inner, + .slider-container .item.cover { + width: 456px; + } + + .slider-container { + height: 102px; + } + + .slider-container .item { + margin-right: 12px; + height: 86px; + } + + .slider-container .item, + .slider-container .item img, + .slider-container .item .img-area img { + width: 144px; + } + + .slider-container .item.cover > img { + width: 303px; + } + + .editorial { + display: none; + } + + .slider-container .item.cover .img-area { + margin-left: 9px; + } + + .slider-container .item.cover .img-block, + .img-block { + height: 89px; + } + + .side-a, .side-b { + width: 220px; + } + + .side-a { + margin-right: 8px; + } + + .slider-container .item .side-a > img, + .slider-container .item .side-b > img { + width: 220px; + } + + .slider-container .item.cover-2 .img-area { + margin: 0; + } + + .slider-container.huge .item { + height: 259px; + margin-bottom: 0; + } + + .slider-container.huge, + .slider-container .item.cover-2 { + height: 300px; + } + + .slider-container.remote { + height: 540px; + } + + .slider-container.remote .item, + .example-4 .view-port { + width: 350px; + } + + .slider-container.remote .item { + height: 127px; + margin-bottom: 8px; + } + + .slider-container.remote .item > img, + .slider-container.remote .item p { + float: left; + } + + #example-4 img { + width: 220px; + height: auto; + } + + .slider-container.remote .item p { + padding: 30px 15px; + } + + .example-4 .view-port { + margin: 0 auto; + } +} + +/* Phone */ +@media only screen and (max-width:480px){ + + .head { + width: 320px; + } + + .head h1 { + font-size: 1.9em; + } + + .view-port, + .track .inner, + .slider-container .item.cover { + width: 302px; + } + + .view-port h2 { + font-size: 1.5em; + } + + .slider-container { + height: 560px; + } + + .slider-container .item { + width: 296px; + height: 124px; + } + + .slider-container .item img, + .slider-container .item p { + float: left; + } + + .slider-container .item img, + #example-4 img { + width: 220px; + } + + .slider-container .item p { + margin: 50px 0 0 10px; + } + + .slider-container.big, + .slider-container.big .item.cover { + height: 264px; + } + + .slider-container.big .item, + .slider-container.big .item.cover > img, + .slider-container.big .item.cover .img-area { + width: 302px; + } + + .slider-container.big .item.cover > img { + float: none; + } + + .slider-container .item.cover .img-block, + .slider-container.big .item, + .slider-container .item.cover .img-area { + height: 88px; + margin-bottom: 0; + } + + .img-block { + width: 151px; + } + + .img-area .img-block { + width: 148px; + } + + .slider-container .item.cover .img-area { + float: none; + clear: both; + margin-left: 0; + margin-top: 1px; + } + + .slider-container .item.cover .img-area .img-block:first-child { + margin-right: 6px; + } + + .slider-container .item .img-area img, + .slider-container .item .img-block img { + float: none; + width: 148px; + } + + .slider-container .item.cover .img-block, + .img-block { + float: left; + } + + .side-a, + .side-b, + .slider-container.huge .item { + width: 302px; + } + + .slider-container.huge .item { + height: 176px; + } + + .side-a { + margin-right: 0; + } + + .slider-container .item .side-a > img, + .slider-container .item .side-b > img { + width: 302px; + } + + .slider-container.huge, + .slider-container .item.cover-2 { + height: 528px; + } + + .example-4 .view-port, + .slider-container.remote .item { + width: 302px; + } + + .slider-container.remote .item p { + margin: 15px 0; + } + + .slider-container.remote { + height: 464px; + } + + #example-4 .item { + height: 108px; + text-align: center; + } + + #example-4 img { + width: 186px; + } + + .example-4 .loading { + width: 302px; + } +} diff --git a/css/style.css b/css/style.css index cdde539..539eb93 100644 --- a/css/style.css +++ b/css/style.css @@ -47,18 +47,27 @@ h2 { position: relative; } -.view-port { +.view-port, .track .inner { width: 946px; +} + +.view-port { overflow: hidden; + position: relative; +} + +.track .inner { + position: relative; + margin: auto; margin-bottom: 30px; + padding: 10px; background: #F1F1F1; - padding: 10px; border-radius: 4px; } -.view-port h2 { +.track .inner h2 { font-weight: 200; font-family: Helvetica,Arial,Verdana,sans-serif; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); @@ -66,11 +75,12 @@ h2 { color: #999; } -.view-port h2:hover { +.track .inner h2:hover { color: #6A3; } -.track a.prev, .track a.next { +.track a.prev, +.track a.next { display: block; position: absolute; top: 50%; @@ -81,7 +91,8 @@ h2 { background-repeat: no-repeat; } -.track a.prev.disabled, .track a.next.disabled { +.track a.prev.disabled, +.track a.next.disabled { display: none; } @@ -116,7 +127,7 @@ h2 { margin: 0; padding: 0; - height: 150px; + height: 166px; } .slider-container.big { @@ -270,7 +281,7 @@ h2 { height: 132px; } -#example-4 .loading { +.example-4 .loading { width: 100%; height: 100%; position: absolute; @@ -284,7 +295,7 @@ h2 { z-index: 1; } -#example-4 .loading:before { +.example-4 .loading:before { content: "loading..."; } @@ -294,7 +305,7 @@ h2 { .example-1 a.prev, .example-1 a.next { - margin-top: -61px; + margin-top: -69px; } .example-2 a.prev, @@ -309,5 +320,5 @@ h2 { .example-4 a.prev, .example-4 a.next { - margin-top: -43px; + margin-top: -68px; } diff --git a/index.html b/index.html index 127358c..85b144c 100644 --- a/index.html +++ b/index.html @@ -3,21 +3,40 @@ Example - jQuery SilverTrack + + + - + + + + + @@ -33,51 +52,56 @@

jQuery SilverTrack

-
+

Basic

-
-
- -

Trailer 1

-
-
- -

Trailer 2

-
-
- -

Trailer 3

-
-
- -

Trailer 4

-
-
- -

Trailer 5

-
-
- -

Trailer 6

-
-
- -

Trailer 7

-
-
- -

Trailer 8

-
-
- -

Trailer 9

+ +
+
+
+ +

Trailer 1

+
+
+ +

Trailer 2

+
+
+ +

Trailer 3

+
+
+ +

Trailer 4

+
+
+ +

Trailer 5

+
+
+ +

Trailer 6

+
+
+ +

Trailer 7

+
+
+ +

Trailer 8

+
+
+ +

Trailer 9

+
+
+
-
+

Cover 1

-
-
- -
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+
+ Carly Rose Takes on Bieber +
+
+ The X Factor unplugged the Top 6 finalists and then had them take requests from the audience. At the top: Carly Rose Sonenclair with Justin Bieber's "As Long As You Love Me." +
+
+
+
- +
- +
-
-
- Carly Rose Takes on Bieber +
+
+
-
- The X Factor unplugged the Top 6 finalists and then had them take requests from the audience. At the top: Carly Rose Sonenclair with Justin Bieber's "As Long As You Love Me." +
+
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- +
+
+ +
+
+ +
-
- +
+
+ +
+
+ +
-
-
-
- +
+
+ +
+
+
-
+

Cover 2

-
-
-
- -
-
- -
-
- +
+
+
+
+ +
+
+ +
+
+ +
-
-
- -
-
- -
-
- +
+ +
+
+ +
+
+ +
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- +
+
+ +
+
+ +
+
+ +
-
- +
+
+ +
+
+ +
+
+ +
-
- +
+
+ +
+
+ +
+
+ +
-
-
-
- +
+
+ +
+
+ +
+
+ +
-
- +
+
+ +
+
+ +
+
+ +
-
- +
+
+ +
+
+ +
+
+ +
+
+
-
+

Remote

-
+ +
+
+
+
@@ -180,8 +181,8 @@

Cover 1

@@ -290,8 +291,8 @@

Cover 2

@@ -310,8 +311,8 @@

Remote

From 0e559d0916ff37e18642c57751f342c7766b90b6 Mon Sep 17 00:00:00 2001 From: tulios Date: Sun, 27 Jan 2013 12:41:17 -0200 Subject: [PATCH 13/34] updating example --- .gitignore | 1 + js/example1.js | 2 +- js/example2_and_3.js | 2 +- js/example4.js | 3 ++- js/script.js | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/js/example1.js b/js/example1.js index 61731d6..3b6f2bb 100644 --- a/js/example1.js +++ b/js/example1.js @@ -6,7 +6,7 @@ jQuery(function() { var example = $("#example-1"); var parent = example.parents(".track"); - var track = example.silverTrack(); + var track = example.silverTrack(SilverTrackExample.defaults); track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", parent), diff --git a/js/example2_and_3.js b/js/example2_and_3.js index 6241379..7a23fa0 100644 --- a/js/example2_and_3.js +++ b/js/example2_and_3.js @@ -8,7 +8,7 @@ jQuery(function() { var example = $(this); var parent = example.parents(".track"); - var track = example.silverTrack({cover: true}); + var track = example.silverTrack($.extend({}, SilverTrackExample.defaults, {cover: true})); track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", parent), diff --git a/js/example4.js b/js/example4.js index e2342d1..6120dbc 100644 --- a/js/example4.js +++ b/js/example4.js @@ -6,7 +6,7 @@ jQuery(function() { var example = $("#example-4"); var parent = example.parents(".track"); - var track = example.silverTrack(); + var track = example.silverTrack(SilverTrackExample.defaults); track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", parent), @@ -74,3 +74,4 @@ jQuery(function() { track.start(); }); + diff --git a/js/script.js b/js/script.js index 5a43712..fe5814b 100644 --- a/js/script.js +++ b/js/script.js @@ -1,6 +1,7 @@ jQuery(function() { window.SilverTrackExample = { + defaults: {easing: "easeInOutQuad", duration: 600}, echoServerHost: "http://echo-server.herokuapp.com", urlAjax: function(opts) { var json = this.jsonCreator(opts.page, opts.perPage); From 3c7624744c3b0c7923c1d304befc6b9a28e22684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=BAlio=20Ornelas?= Date: Mon, 10 Jun 2013 10:08:08 -0300 Subject: [PATCH 14/34] Update index.html --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index ad7977c..6c54be5 100644 --- a/index.html +++ b/index.html @@ -11,10 +11,10 @@ - - - - + + + + From 55f1e859143254fe5b0f992638bd570d6060b5f0 Mon Sep 17 00:00:00 2001 From: tulios Date: Mon, 10 Jun 2013 10:12:27 -0300 Subject: [PATCH 15/34] force deploy --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 6c54be5..e007d87 100644 --- a/index.html +++ b/index.html @@ -25,6 +25,7 @@ + - - - - - - - + + + + + + + diff --git a/js/jquery-easing-1.3.0.js b/js/jquery-easing-1.3.0.js new file mode 100644 index 0000000..4cd3938 --- /dev/null +++ b/js/jquery-easing-1.3.0.js @@ -0,0 +1,206 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + 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; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + diff --git a/js/jquery.silver_track.bullet_navigator.js b/js/jquery.silver_track.bullet_navigator.js new file mode 100644 index 0000000..877c061 --- /dev/null +++ b/js/jquery.silver_track.bullet_navigator.js @@ -0,0 +1,91 @@ +/*! + * jQuery SilverTrack - Bullet Navigator Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.1.0 + */ + +(function ($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.BulletNavigator({ + * container: $(".bullet-pagination") + * })); + * + */ + $.silverTrackPlugin("BulletNavigator", { + defaults: { + bulletClass: "bullet", + activeClass: "active" + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.container = this.options.container; + }, + + onInstall: function(track) { + this.track = track; + }, + + afterStart: function() { + var self = this; + this._createBullets(); + this._getBulletByPage(1).addClass(this.options.activeClass); + this._getBullets().click(function(e) { + e.preventDefault(); + var bullet = $(this); + self._updateBullets(bullet); + self.track.goToPage(bullet.data("page")); + }); + }, + + beforePagination: function(track, event) { + var bullet = this._getBulletByPage(event.page); + this._updateBullets(bullet); + }, + + afterRestart: function() { + var bullet = this._getBulletByPage(this.track.currentPage); + this._updateBullets(bullet); + }, + + onTotalPagesUpdate: function() { + this._clearBullets(); + this._createBullets(); + this._getBullets().click(function(e) { + e.preventDefault(); + }); + }, + + _clearBullets: function() { + $("." + this.options.bulletClass, this.container).remove(); + }, + + _createBullets: function() { + for (var i = 0; i < this.track.totalPages; i++) { + this.container.append(this._createBullet(i + 1)); + } + }, + + _updateBullets: function(bullet) { + this._getBullets().removeClass(this.options.activeClass); + bullet.addClass(this.options.activeClass); + }, + + _getBulletByPage: function(page) { + return $("." + this.options.bulletClass + "[data-page='" + page + "']", this.container); + }, + + _getBullets: function() { + return $("." + this.options.bulletClass, this.container); + }, + + _createBullet: function(page) { + return $("", {"class": this.options.bulletClass, "data-page": page, "href": "#"}); + } + + }); + +})(jQuery, window, document); + diff --git a/js/jquery.silver_track.js b/js/jquery.silver_track.js new file mode 100644 index 0000000..7a84f98 --- /dev/null +++ b/js/jquery.silver_track.js @@ -0,0 +1,360 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.1.0 + */ + +(function ($, window, document) { + + var instanceName = "silverTrackInstance"; + + $.fn.silverTrack = function(options) { + var container = $(this); + + if (!container.data(instanceName)) { + var options = $.extend({}, $.fn.silverTrack.options, options); + var instance = new SilverTrack(container, options); + container.data(instanceName, instance); + return instance; + } + + return container.data(instanceName); + }; + + $.fn.silverTrack.options = { + perPage: 4, + itemClass: "item", + mode: "horizontal", + autoHeight: false, + cover: false, + duration: "slow", + easing: "swing" + }; + + var SilverTrack = function (container, options) { + this.options = options; + this.container = container; + this.paginationEnabled = true; + this.calculateTotalPages = true; + this.currentPage = 1; + this.totalPages = 1; + this.plugins = []; + + this._items = null; + }; + + SilverTrack.prototype = { + + start: function() { + this._validateAnimationEasing(); + this._executeAll("beforeStart"); + this._init(); + this._executeAll("afterStart"); + }, + + /* + * page: Number + * opts: {animate: true|false} + */ + goToPage: function(page, opts) { + if (!this.paginationEnabled || + (page <= this.currentPage && this.currentPage === 1) || + page > this.totalPages || + page === this.currentPage) { + return; + } + + var useCover = this.options.cover && (page === 1); + var isHorizontal = this.options.mode === "horizontal"; + var direction = page > this.currentPage ? "next" : "prev"; + var items = useCover ? this._getCover() : this._calculateItemsForPagination(page); + + if (items.length > 0) { + var shift = this._calculateItemLeft(items.get(0)); + var event = {name: direction, page: page, cover: useCover, items: items}; + var opts = $.extend({animate: true}, opts); + + if (items.length < this.options.perPage && !useCover && isHorizontal) { + shift -= this.itemWidth * (this.options.perPage - items.length); + } + + this.currentPage = page; + this._executeAll("beforePagination", [event]); + this.paginationEnabled = false; + + this._animate(shift, event, opts.animate); + } + }, + + next: function() { + this.goToPage(this.currentPage + 1); + }, + + prev: function() { + this.goToPage(this.currentPage - 1); + }, + + hasPrev: function() { + return !(this.currentPage === 1); + }, + + hasNext: function() { + return !(this.currentPage === this.totalPages || this.totalPages <= 1); + }, + + /* + * { + * page: Number, // default: 1 + * keepCurrentPage: true|false, // default: false + * animate: true|false // default: false + * } + */ + restart: function(opts) { + var opts = $.extend({ + page: 1, + keepCurrentPage: false, + animate: false + }, opts); + + if (opts.keepCurrentPage) { + opts.page = this.currentPage; + } + + this.container.css("height", ""); + this._getItems(true).css("top", ""); + + this.paginationEnabled = true; + this.currentPage = 1; + + this._init(); + this.goToPage(opts.page, {animate: opts.animate}); + this._executeAll("afterRestart"); + }, + + install: function(plugin) { + this.plugins.push(plugin); + this._callFunction(plugin, "onInstall"); + return this; + }, + + reloadItems: function() { + this._items = null; + }, + + updateTotalPages: function(totalPages) { + this.calculateTotalPages = false; + this.totalPages = this._abs(totalPages); + this._executeAll("onTotalPagesUpdate"); + }, + + _init: function() { + this._positionElements(); + if (this.calculateTotalPages) { + this._calculateTotalPages(); + } + }, + + _getItems: function(ignoreCoverFilter) { + if (!this._items) { + this._items = $("." + this.options.itemClass, this.container); + } + + return !ignoreCoverFilter && this.options.cover ? this._items.not(":first") : this._items; + }, + + _getCover: function() { + return $("." + this.options.itemClass + ":first", this.container); + }, + + _animate: function(shift, event, isAnimated) { + var self = this; + var duration = isAnimated ? this.options.duration : 0; + + this._executeAll("beforeAnimation", [event]); + this.container.stop().animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { + self.paginationEnabled = true; + self._executeAll("afterAnimation", [event]); + self._adjustHeight(event.items); + }); + }, + + _adjustHeight: function(items) { + if (this.options.autoHeight == true) { + var newHeight = 0; + + if (this.options.mode === "horizontal") { + newHeight = $(items[0]).outerHeight(true); + + } else if (this.options.mode === "vertical") { + items.each(function(index, value) { + newHeight += $(value).outerHeight(true); + }); + } + + var event = {items: items, newHeight: newHeight}; + this._executeAll("beforeAdjustHeight", [event]); + this.container.stop().animate({"height": newHeight + "px"}); + this._executeAll("afterAdjustHeight", [event]); + } + }, + + _positionElements: function() { + this.container.css({"left": "0px"}); + this.itemWidth = this._calculateItemWidth(); + this.coverWidth = this._calculateCoverWidth(); + + if (this.options.mode === "horizontal") { + this._positionHorizontal(); + + } else if (this.options.mode === "vertical") { + this._positionVertical(); + } + }, + + _positionHorizontal: function() { + var width = 0; + this._getItems(true).each(function(index, value) { + var item = $(value); + item.css({"left": width + "px"}); + width += item.outerWidth(true); + }); + + this.container.css("width", width + "px"); + }, + + _positionVertical: function() { + var width = 0; + var height = 0; + + var perPage = this.options.perPage; + var useCover = this.options.cover; + var pageItem = 0; + + this._getItems(true).each(function(index, value) { + var item = $(value); + item.css({"top": height + "px", "left": width + "px"}); + pageItem++; + + if (pageItem === perPage || (useCover && index === 0)) { + pageItem = 0; + height = 0; + width += item.outerWidth(true); + + } else { + height += item.outerHeight(true); + } + }); + + this.container.css("width", width + this.itemWidth + "px"); + }, + + _calculateTotalPages: function() { + this.totalPages = Math.ceil(this._getItems().length/this.options.perPage); + + if (this.options.cover) { + this.totalPages += 1; + } + }, + + _calculateContainerLeft: function() { + return this._abs(this.container.css("left")); + }, + + _calculateItemLeft: function(item) { + return this._abs($(item).css("left")); + }, + + _calculateItemsForPagination: function(page) { + var delta = this.options.cover ? (page - 1) * this.options.perPage : page * this.options.perPage; + return this._getItems().slice(delta - this.options.perPage, delta); + }, + + _calculateWidth: function(items, isCover) { + if (this.options.cover && isCover) { + return this.coverWidth; + } + + return items.length * this.itemWidth; + }, + + _calculateItemWidth: function() { + var complement = this.options.cover ? ":eq(1)" : ":first"; + var item = $("." + this.options.itemClass + complement, this.container); + return item.outerWidth(true); + }, + + _calculateCoverWidth: function() { + return this.options.cover ? this._getCover().outerWidth(true) : 0; + }, + + _validateAnimationEasing: function() { + var easingFuctionExists = !!($.easing && $.easing[this.options.easing]); + + if (!easingFuctionExists) { + this.options.easing = $.fn.silverTrack.options.easing; + } + }, + + _executeAll: function(name, args) { + for (var i = 0; i < this.plugins.length; i++) { + this._callFunction(this.plugins[i], name, args); + } + }, + + _callFunction: function(obj, name, args) { + if(obj && name && typeof obj[name] === 'function') { + obj[name].apply(obj, [this].concat(args || [])); + } + }, + + _abs: function(string) { + return Math.abs(parseInt(string, 10)); + } + + } + + SilverTrack.Plugins = {}; + + $.silverTrackPlugin = function(name, obj) { + SilverTrack.Plugins[name] = function(settings){ + var options = $.extend({}, this.defaults, settings); + this.initialize(options); + }; + + SilverTrack.Plugins[name].prototype = $.extend({ + defaults: {}, + initialize: function(options) {}, + + onInstall: function(track) {}, + beforeStart: function(track) {}, + afterStart: function(track) {}, + afterRestart: function(track) {}, + onTotalPagesUpdate: function(track){}, + + /* Event format + * { + * name: "prev", // or "next" + * page: 1, + * cover: false, + * items: [] + * } + */ + beforeAnimation: function(track, event) {}, + afterAnimation: function(track, event) {}, + beforePagination: function(track, event) {}, + + /* Event format + * { + * items: [], + * newHeight: 150 + * } + */ + beforeAdjustHeight: function(track, event) {}, + afterAdjustHeight: function(track, event) {} + }, obj); + } + + window.SilverTrack = SilverTrack; + +})(jQuery, window, document); + diff --git a/js/jquery.silver_track.navigator.js b/js/jquery.silver_track.navigator.js new file mode 100644 index 0000000..bf30ef1 --- /dev/null +++ b/js/jquery.silver_track.navigator.js @@ -0,0 +1,70 @@ +/*! + * jQuery SilverTrack - Navigator Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.1.0 + */ + +(function ($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.Navigator({ + * prev: $("a.prev"), + * next: $("a.next") + * })); + * + */ + $.silverTrackPlugin("Navigator", { + defaults: { + disabledClass: "disabled" + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.prev = this.options.prev; + this.next = this.options.next; + + var self = this; + this.prev.addClass(this.options.disabledClass).click(function(e) { + e.preventDefault(); + self.track.prev(); + }); + + this.next.addClass(this.options.disabledClass).click(function(e) { + e.preventDefault(); + self.track.next(); + }); + }, + + onInstall: function(track) { + this.track = track; + }, + + afterStart: function() { + this.afterAnimation(); + }, + + afterAnimation: function() { + this.track.hasPrev() ? this._enable(this.prev) : this._disable(this.prev); + this.track.hasNext() ? this._enable(this.next) : this._disable(this.next); + }, + + afterRestart: function() { + this.afterAnimation(); + }, + + onTotalPagesUpdate: function() { + this.afterAnimation(); + }, + + _enable: function(element) { + element.removeClass(this.options.disabledClass); + }, + + _disable: function(element) { + element.addClass(this.options.disabledClass); + } + }); + +})(jQuery, window, document); + diff --git a/js/jquery.silver_track.remote_content.js b/js/jquery.silver_track.remote_content.js new file mode 100644 index 0000000..205d689 --- /dev/null +++ b/js/jquery.silver_track.remote_content.js @@ -0,0 +1,229 @@ +/*! + * jQuery SilverTrack - Remote Content Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.1.0 + */ + +(function ($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.RemoteContent({ + * + * // A string or a function to generate the URL + * url: function(track, page, perPage) { + * return "/my/url/page/" + page; + * }, + * + * beforeStart: function(track) { + * }, + * + * beforeSend: function(track) { + * }, + * + * // It should return an array with the elements to be appended to + * // the container + * process: function(track, perPage, json) { + * var data = json.data; + * var array = []; + * + * for (var i = 0; i < perPage; i++) { + * array.push( + * $("
", {"class": "item"}). + * append($("", {"src": data[i].img_url})). + * append($("

", {"text": data[i].title})) + * ); + * } + * + * return array; + * }, + * + * beforeAppend: function(track, items) { + * }, + * + * updateTotalPages: function(track, json) { + * track.updateTotalPages(json.total_pages); + * } + * })); + * + */ + $.silverTrackPlugin("RemoteContent", { + defaults: { + lazy: true, + + type: "GET", + params: {}, + + beforeStart: function(track) {}, + beforeSend: function(track, jqXHR, settings) {}, + beforeAppend: function(track) {}, + afterAppend: function(track) {}, + process: function(track, perPage, data) {}, + updateTotalPages: function(track, data) {}, + onError: function(track, jqXHR, textStatus, errorThrown) {} + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.ajaxCache = {}; + this.filled = false; + this.loadContentEnabled = true; + }, + + onInstall: function(track) { + this.track = track; + this._updateNavigationControls(); + }, + + afterStart: function() { + this.options.beforeStart(this.track); + if (this.options.lazy) { + + this._loadContent(this.track.currentPage, function() { + this.filled = true; + this.track.restart(); + }); + + } else { + this.filled = true; + } + }, + + afterAnimation: function(track, event) { + this.loadContentEnabled = true; + }, + + _updateNavigationControls: function() { + var self = this; + this.track.next = function() { + if (self.track.hasNext() && self.loadContentEnabled) { + + var page = self.track.currentPage + 1; + self.loadContentEnabled = false; + self._loadContent(page, function() { + self.track.goToPage(page); + }); + + } + } + }, + + _loadContent: function(page, contentLoadedCallback) { + var self = this; + var url = this._generateUrl(page); + + if (!this.ajaxCache[url]) { + + $.ajax( + $.extend(this._ajaxDefaults(), { + url: url, + success: function(data) { + self._onSuccess(url, data); + contentLoadedCallback.apply(self); + } + }) + ); + + } else { + contentLoadedCallback.apply(self); + } + }, + + _onSuccess: function(url, data) { + this.ajaxCache[url] = true; + var items = this.options.process(this.track, this.track.options.perPage, data) || []; + + this.options.beforeAppend(this.track, items); + this._updateItemsPosition(items); + this.options.afterAppend(this.track, items); + + this.options.updateTotalPages(this.track, data); + this.track.reloadItems(); + }, + + _onBeforeSend: function(jqXHR, settings) { + this.options.beforeSend(this.track, jqXHR, settings); + }, + + _onError: function(jqXHR, textStatus, errorThrown) { + if (window.console) { + console.info('SilverTrack.Plugins.RemoteContent - Error:', textStatus); + } + + this.options.onError(this.track, jqXHR, textStatus, errorThrown); + }, + + _updateItemsPosition: function(items) { + if (this.track.options.mode === "horizontal") { + this._positionHorizontal(items); + + } else if (this.track.options.mode === "vertical") { + this._positionVertical(items); + } + }, + + _positionHorizontal: function(items) { + var lastItem = $("." + this.track.options.itemClass + ":last", this.track.container); + + var width = parseInt(lastItem.css("left"), 10) || 0; + if (width !== 0) { + width += this.track.itemWidth; + } + + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.css({"left": width + "px"}); + this.track.container.append(item); + width += item.outerWidth(true); + } + + this.track.container.width(width); + }, + + _positionVertical: function(items) { + var itemWidth = this.track.itemWidth; + var width = Math.abs(parseInt(this.track.container.css("left"), 10)) || 0; + + if (this.filled) { + width += itemWidth; + this.track.container.css("width", (this.track.currentPage + 1) * itemWidth); + } + + var height = 0; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.css({"left": width + "px", "top": height + "px"}); + this.track.container.append(item); + height += item.outerHeight(true); + } + }, + + _generateUrl: function(page) { + var url = this.options.url; + var perPage = this.track.options.perPage; + + if (typeof url === 'function') { + return url(this.track, page, perPage); + } + + return url.replace(/{page}/, page).replace(/{perPage}/, perPage); + }, + + _ajaxDefaults: function() { + var self = this; + return { + context: this.track.container, + type: this.options.type, + data: this.options.params, + beforeSend: function(jqXHR, settings) { + self._onBeforeSend(jqXHR, settings); + }, + error: function(jqXHR, textStatus, errorThrown) { + self._onError(jqXHR, textStatus, errorThrown); + } + } + } + + }); + +})(jQuery, window, document); diff --git a/js/jquery.silver_track.responsive_hub_connector.js b/js/jquery.silver_track.responsive_hub_connector.js new file mode 100644 index 0000000..dcdce06 --- /dev/null +++ b/js/jquery.silver_track.responsive_hub_connector.js @@ -0,0 +1,41 @@ +/*! + * jQuery SilverTrack - Responsive Hub Connector Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.1.0 + */ + +(function ($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ + * layouts: ["phone", "small-tablet", "tablet", "web"], + * onReady: function(track, options, event) {}, + * onChange: function(track, options, event) {} + * })); + * + */ + $.silverTrackPlugin("ResponsiveHubConnector", { + initialize: function(options) { + this.options = options; + this.layouts = this.options.layouts; + this.enabled = !!$.responsiveHub; + }, + + onInstall: function(track) { + this.track = track; + + if (this.enabled) { + var self = this; + $.responsiveHub("ready", this.layouts, function(event) { + self.options.onReady(self.track, self.options, event); + }); + + $.responsiveHub("change", this.layouts, function(event) { + self.options.onChange(self.track, self.options, event); + }); + } + } + }); + +})(jQuery, window, document); + diff --git a/js/modernizr_mediaqueries.js b/js/modernizr_mediaqueries.js new file mode 100644 index 0000000..08d9209 --- /dev/null +++ b/js/modernizr_mediaqueries.js @@ -0,0 +1,5 @@ +/* Modernizr 2.6.2 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-mq-teststyles + */ +;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var A in l)u(l,A)&&(q=A.toLowerCase(),e[q]=l[A](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document); + diff --git a/js/responsive_hub.js b/js/responsive_hub.js new file mode 100644 index 0000000..dde06f8 --- /dev/null +++ b/js/responsive_hub.js @@ -0,0 +1,207 @@ +/*! + * ResponsiveHub - JavaScript goodies for Responsive Design + * https://github.com/globocom/responsive-hub + * version: 0.3.0 + */ + +(function ($, window, document) { + + $.responsiveHub = function(settings) { + if (typeof settings === "object") { + ResponsiveHub.init(settings); + + } else if (typeof settings === "string") { + var args = [].splice.call(arguments, 0, arguments.length); + var methodName = args.splice(0, 1)[0]; + + if (ResponsiveHub[methodName]) { + return ResponsiveHub[methodName].apply(ResponsiveHub, args); + } else { + if (window.console && window.console.log) { + console.log("[ResponsiveHub] Undefined method '" + methodName + "'"); + } + } + } + } + + var ResponsiveHub = { + NAMESPACE: "ResponsiveHub_", + NAMESPACE_READY: "ResponsiveHubReady_", + + currentLayout: null, + resizeBound: false, + hasMediaQuerySupport: false, + windowObj: null, + loaded: false, + resizeStopDelay: 500, + _resizeTimer: null, + + init: function(settings) { + if (!this.loaded) { + this.loaded = true; + this.windowObj = this._getWindow(); + this.layouts = settings.layouts; + this.defaultLayout = settings.defaultLayout; + + this._boot(); + } + }, + + self: function() { + return this; + }, + + width: function() { + return this.windowObj.width(); + }, + + layout: function() { + if (!this.hasMediaQuerySupport) { + return this.defaultLayout; + } + + var widths = []; + var keys = this._keys(this.layouts); + for (var j in keys) { + widths.push(parseInt(keys[j], 10)); + } + + widths.sort(function(a,b){return b - a}); + var width = this.width(); + for (var i in widths) { + var w = widths[i]; + if (width >= w) return this.layouts[w]; + } + + return this.layouts[widths[widths.length - 1]]; + }, + + ready: function(layout, callback) { + this._bind(this.NAMESPACE_READY, layout, callback); + }, + + change: function(layout, callback) { + this._bind(this.NAMESPACE, layout, callback); + }, + + isResizing: function() { + return this._resizeTimer !== null; + }, + + resizeStart: function(callback) { + this.windowObj.bind("resizeStart", callback); + }, + + resizeStop: function(callback) { + this.windowObj.bind("resizeStop", callback); + }, + + isTouch: function() { + var wnd = (this.windowObj || this._getWindow()).get(0); + return !!(('ontouchstart' in wnd) || (wnd.DocumentTouch && wnd.document instanceof DocumentTouch)); + }, + + hasFlash: function() { + try { return !! new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); } catch(e1) {} + var mimeType = this._mimeTypeFlash(); + return !! (mimeType && mimeType.enabledPlugin); + }, + + _updateLayout: function() { + var self = $.responsiveHub("self"); + var layout = self.layout(); + + if (layout != self.currentLayout) { + self.currentLayout = layout; + self.windowObj.trigger(self.NAMESPACE + layout, [self._newEvent()]); + } + }, + + _resizeStartStop: function(event) { + var self = $.responsiveHub("self"); + + if (self._resizeTimer) { + clearTimeout(self._resizeTimer); + } else { + self.windowObj.trigger("resizeStart", [event]); + } + + self._resizeTimer = setTimeout(function() { + self._resizeTimer = null; + self.windowObj.trigger("resizeStop", [event]); + }, self.resizeStopDelay); + }, + + _boot: function() { + this.hasMediaQuerySupport = Modernizr.mq("only all"); + if (!this.resizeBound && this.hasMediaQuerySupport) { + + this.windowObj.bind("resize", this._updateLayout); + this.windowObj.bind("resize", this._resizeStartStop); + + this.resizeBound = true; + } + + if (!this.currentLayout) { + this.currentLayout = this.layout(); + var readyEvent = this.NAMESPACE_READY + this.currentLayout; + this.windowObj.trigger(readyEvent, [this._newEvent()]); + this.windowObj.unbind(readyEvent); + } + }, + + _bind: function(namespace, layout, callback) { + var self = this; + var layouts = this._flatten(this._isArray(layout) ? layout : [layout]); + var eventCallback = function(event, responsiveHubEvent) { + callback(responsiveHubEvent); + } + + $.each(layouts, function(index, value) { + $(window).bind(namespace + value, eventCallback); + }); + }, + + _newEvent: function() { + return {layout: this.currentLayout, touch: this.isTouch()}; + }, + + // https://github.com/jiujitsumind/underscorejs/blob/master/underscore.js#L644 + _keys: Object.keys || function(obj) { + var keys = []; + for (var key in obj) if (obj.hasOwnProperty(key)) keys[keys.length] = key; + return keys; + }, + + _flatten: function(array, shallow) { + var self = this; + var flatten = function(input, shallow, output) { + for (var i = 0; i < input.length; i++) { + var value = input[i]; + if (self._isArray(value)) { + shallow ? output.push(value) : flatten(value, shallow, output); + } else { + output.push(value); + } + } + return output; + } + + return flatten(array, shallow, []); + }, + + _getWindow: function() { + return $(window); + }, + + _mimeTypeFlash: function() { + return navigator.mimeTypes["application/x-shockwave-flash"]; + }, + + _isArray: Array.isArray || function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + } + }; + +})(jQuery, window, document); + From fe97061d238f411bfc1f2d34c71a295c1c0f9e06 Mon Sep 17 00:00:00 2001 From: tulios Date: Mon, 10 Jun 2013 10:37:07 -0300 Subject: [PATCH 17/34] fixing strict MIME type checking --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index f40d15f..bbe9333 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + From 7726970059c61032183127cb89b080720381767d Mon Sep 17 00:00:00 2001 From: tulios Date: Fri, 29 Nov 2013 09:33:55 -0200 Subject: [PATCH 18/34] fixed examples --- js/example4.js | 7 +++++-- js/script.js | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/js/example4.js b/js/example4.js index 6120dbc..b45ff70 100644 --- a/js/example4.js +++ b/js/example4.js @@ -18,7 +18,7 @@ jQuery(function() { })); track.install(new SilverTrack.Plugins.RemoteContent({ - url: function(page, perPage) { + url: function(track, page, perPage) { return SilverTrackExample.urlAjax({page: page, perPage: perPage, totalPages: 5}) }, beforeStart: function(track) { @@ -32,6 +32,10 @@ jQuery(function() { var array = []; for (var i = 0; i < perPage; i++) { + if (data[i] === undefined) { + break; + } + array.push( $("
", {"class": "item"}). append($("", {"src": data[i].img_url})). @@ -74,4 +78,3 @@ jQuery(function() { track.start(); }); - diff --git a/js/script.js b/js/script.js index fe5814b..90d96c7 100644 --- a/js/script.js +++ b/js/script.js @@ -1,5 +1,7 @@ jQuery(function() { + jQuery.support.cors = true; + window.SilverTrackExample = { defaults: {easing: "easeInOutQuad", duration: 600}, echoServerHost: "http://echo-server.herokuapp.com", @@ -9,7 +11,7 @@ jQuery(function() { }, urlCreator: function(obj, page, totalPages) { - var jsonText = encodeURIComponent(JSON.stringify(obj)); + var jsonText = escape(JSON.stringify(obj)); return this.echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=" + totalPages; }, From 9e2182c0663da69803a39ec79410610a80ccb408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=BAlio=20Ornelas?= Date: Tue, 11 Mar 2014 10:23:08 -0300 Subject: [PATCH 19/34] Create gh-pages branch via GitHub --- images/body-bg.png | Bin 0 -> 8859 bytes images/highlight-bg.jpg | Bin 0 -> 34222 bytes images/hr.png | Bin 0 -> 1037 bytes images/octocat-icon.png | Bin 0 -> 1651 bytes images/tar-gz-icon.png | Bin 0 -> 1671 bytes images/zip-icon.png | Bin 0 -> 1661 bytes index.html | 353 +++++---------------------------- javascripts/main.js | 1 + params.json | 1 + stylesheets/print.css | 226 +++++++++++++++++++++ stylesheets/pygment_trac.css | 69 +++++++ stylesheets/stylesheet.css | 371 +++++++++++++++++++++++++++++++++++ 12 files changed, 722 insertions(+), 299 deletions(-) create mode 100644 images/body-bg.png create mode 100644 images/highlight-bg.jpg create mode 100644 images/hr.png create mode 100644 images/octocat-icon.png create mode 100644 images/tar-gz-icon.png create mode 100644 images/zip-icon.png create mode 100644 javascripts/main.js create mode 100644 params.json create mode 100644 stylesheets/print.css create mode 100644 stylesheets/pygment_trac.css create mode 100644 stylesheets/stylesheet.css diff --git a/images/body-bg.png b/images/body-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..d0618fe749178e814554f19fd158dea90020252d GIT binary patch literal 8859 zcmaKS2RPer`!7XN)TXFCiy*etti88dMeHDg*qhp;tyOAkQ7vkVJ!(^%qOn(Ot-YP} zci#8?pL1R3J-NQgciro`pL;yd=Sr-OmNL;J+D8}|7(}Wn3VP^s)ZZ`O1N3h?on0^b zMB}Mw?5Pj4_w)gK*kQ=o!mRC>RH0x8J3TwFt)KgVog@YZmNvw|*wa{317rh(@`3-- z@cBaB(A*dpk}|$-U>j#UPbObLS0JD*MA@LvoQTb;^{2K^1qET*3@B= zhk4jBiSP*lYy^NnCQ(s7psYkZK0bUtLVPd}2Y#T0gv4JNf`R}v1pw~n>IwD*xWZZgEkVH! zZsP%Q^Mt@$nf^)yTf@9OrC89G{_i0`-Toui75*8CQY>h7d=Q8&NM1xlR7ephFD57_1OzGqUns~4DJlw!hzX+K z2rJ3|n^ys5;{~;I_53%l?f>v9{8!$;aRYTjYgVxHfOy;4DtW-5O#k=?1o`i_$o*G& z|Khd%@3y@7ue|(dWBC6@!T%8z|9*rHwZE7DiE;GJf3n2R6`dL$=p5)mQM+ScFs!O7 z$Qk(lT3^`BWbH|d1e;DiS-PjErNiAqD{vs2oets-`2 zTwM@b3OvqZw7CDX;9&NwB zyXF&zU9DX11bW;_G3JJhilC0$?{5!L!#`wq*{i{raGpzwKg`@%}>j^`7*hbPMhNWq|adQQ~LffP>55fz#K=U8B-1BRHt~ zHmUO)RNqT1?=GQb&as^Z%loUD;vfr@11e4^2CmDtn~vH!J||hd$#?LSQd68$nY2T} z)?9xDA@$8-T^F<5H?;Uvpk|#jm36 zF2wgPm9Eu7A%#petRn9&`ea0NxsccJIdVrY%j9Bz>76*d8RFG$M^9;&n5etCzL)bm zUB@u9f`M!?RM)Ypd~9)IS%7Hi*6c8A&`@ZWHG*sQN5EvNMs;3yJL#?DRiLByLdy_s z7Los=RZ_3Fg~R^-SM-pmu4^|@G^jtQ_=aa~;!EC%1WvSbnN@Y&t)doBtzJqOtt=oEJZfsqNyXCopAi?Ah-O44U2R}%+SuOQvKh$Gg zo#WRwncN&J?u`Wzze@hPun|aUl4Tf3@4%kf3`>EzX(BH&HRcyM{{+;iQHhKlpWg(y z1_TE$B0k>ME1UI{z}GckD&I3sS`cyg<BX zv%%!I6$NWEbOCR6fm_JH5nH3l-p%`fQxeT)UI+Fd5Q2}Oynb?&!=Bn(%{mbt}(O^)>tY<8U_LQ>7uZ=j*FEm?D^T< zxI%h0i1(K+#FD;;%C-G;X?HT~9#O6N(eltfGk11!^!LcqNl?9tk6Cm6woI52zu9Iq zG5=4CUX7HuT!7PCTtMLPTvu!L2J8Mg6aq0j$TXbu+BHO)Y6tZEh1Uh zL1%)myFo}D$mY-b)4eaw$jai8EDb!WuOeGUY)|kRmb{SOAepG&5_xQ9$pJLQDlM)y zL#lB5&q*#)t)%r@*bqK5R#cu~j87ed7S9{Ab`6^P=DCqu-tnc{D*QE2Fr-Xcn8MXb zzEI0;tWliB8%TYmk@euMTlp4^MwH3h{8E~3RHjh+0aX}nU}i7;8lSZxfGmm>vt1_I z$S0o1Xy<@hW!a^q1pno-278XXCER``$-n>yUZU*wTyL$lF`qYR5l%jwA?B1zOsD;v zH;gp24BNcbS8VUWYgUVKIF+dPbnBmi6@ zbfSRkHRCM}8(GC-eg^~N^U8+7^_zLqxf|!)`1!)^;!o_S$)(;PVDFqSYrBs4MuYTb zG;J}-X3ha7qwJv98ZgCovn6T4kIN6jd5q#fgoUTkLOe4C@e6{G)$j-oc;#F%z6#cN z>Vi(WMYd107!qxCLmGPJuYQV$(A-Rv#`*y z_=ibkX)6W6sQj%VC**1@?`>U0P87)1=1!$bE;(=4oE2P#-9U#@s=m?%++~;)7)HIL zZpeqdoU`;a+b`>8pAr{MH^bU4ix2k%X(x&wj(2a;$>y%}T^aU|wvDWXpZj7y|M>hcw-TR@3&G1=?$`WA;XYazx@i$Kj48WzbQpW0zxO}d^@FTk2DcA_*&a-teV(IItQXTsm zGdMf7)Uo&%kFiZ#uaEQYZ{mPt-Y@m97J60Q8}T=@kq$hw1N`2TU2U1GV*)G4n9(dN zBh-K=VkYAVR7$-TMKlTj_=iT9#-Yc?thg~_?|zv*S03>z3=}SRg-TsjwyTP{M+)7? z;Qc1?h#f3&+3)+ASMx}csq>0bw{6~5Mt4T@ZeBo5vHJL299JeV5U2;HlRP`iV{Hdgn8WG(1BF+fBmfbY8}<_3wBM|)rjB%9vGr7SLl|T;FfX2VeR_7z;OITy zfg0PvaYSzXa&)d4{$wHlj)Wt!6slu$##y%AZs570H&3g^UpkwB$$bE138MIbA%un|0rJ zlG*i3Na1C?U>DMwVkQWx>lxhohFQkffq@ARQs;V+*3)A!Bw+T5K+Ee+5Yf@3Qd!O8 zYP`$J@Rp8u2i>I3)pK1A@7ON>T-W-9BpV&J-CgY>NDO?nGIuLjFph)6iZzj>RCWO_ zD#<#GZ`rlBWVu9`0MJ$rYb29_BsISnBS8+I43E(p})4$Cl5q4|HamLN!SbCAeG{OGU z(+}#6DfTrn4}9QyQ++0w#uZW|)%t?B2Tw3Ow9~SOhv-zlcMA8B#YB>-;*f@Rr5uBL zDM!uq$&Yu$RpKQ`5p6A(<3mdm&-xHSuoPCnjbziaNIKdo&E*FN>m2EB1yDI2Wj4|H z&Hk3ui1WKOf{TWC8fH#8ZRp5g;P)fY&0)AT%|~U$g|=RwAz}JoEA5=#ZL^S#RolSH z;JYe(o8;%3zX!`k2wAaBVMna=l^>>B>;yH7Bc_B4ViK#%B9**N3d_&>KkpiiKfd&z z?}B*UkQJY|MKJS=Fg{GjNIVxqlofP4qK*&Su3cdaGw)^+H3l&~W2Ajru^afDF$=#` zRp-;{{UqX0yA_|cV_frRTWhjl8b?=+-ZpH*xSMVqi4K=Kc1$=!b@OF{3AHXRGdFQZ z<*Wf0rj;8UTtoVVeuzQwcEg zcc$~J5i_)Lk>)d8nIp(0@U)>?*`3i`b~tkVsOn8YxVch$HDr0W3JzXM$rlSJnSlRc zg7tH*Vv>Dqw0X*2AE<%tt=Ol8|B;&WZBKP~2U|Do7tI_OJ@3?3Y=NJW8_|bq>jHJt z7sBZ3sU9>?nm*C(o+a6zIe#f6TV)H9jY}o@5J72Gp0i%S!A18+GnGE*_H^dE!}qJQ z$avgRH<+KMuz>}$yvjG#bRf+(e0wx&DRMZy&a539FV#ZW1^jDR;WW3aA-HId`2}x2 z;UPheNxQ??&R()Ml&<)lgA!xZ1`QDt7@(LT%2Tg=P_FQOT6%8gBL23E z3&dUPz@BQT=cOs=KTP*wA#7*Ag{pyseA0Dy@v1Z-Ls4NG;BorYv=uwLAnZAZoaWFF z@w*Z$wY{g9FI688Hg-1c_WfbOf7B#5cH+o%;Xbc$&-3_5n#U;fwg}HrBqZZeWVe0+ zY)aI0fpcuf(v(z%F$%l?5Sf~{`Rr-^2UM&g?KMmFM)(ARkYU5IA}zHn&Vl?$Pzg`A zxLc9t3JE^4X$>P|2d@d(aB=_dBm zR>%tddcl!rw^ctM4}IF{M^+p1u>8%ko=+DQSt}{1ryxDmp&VXPjdLWLR?(^WTo(!D z;t)xN#(D2JlBDC_JCykm}+K$cFt`^#OwL zjnV8c072JNz0%*i0QuG+Znj%TONU?4#vNTU_ZQawo5m~E9V6<#PVppF$qz-y#E)LE zsAX0{;B@RVQ+UoIA$sxS^KgCQLACym!^)U2g?M|-SNePA{lfR?a=r$v+g+R7f6vBL z!f$-CvqYaKxdEsJJ1TKJB}zXSl;pP`wJ%6(?%~s$8(E@wttS)`%cGnbn6H_05Pm4r z<|g*Xt|TGeVJz;HW4Z2I-Bs{Pi&wXbcMOTq27X+@5%%`wLGP%}1HJy3hA}C7sbTdz znr(~Kgn>sNpm7o^GMhAh?6#GDLfBun4$&>@Ks)4W(oBFalH@D}$3NxQpJ$B~T<=vA zg(u(w*pOag6&e?{c{*S>tc7{LiT;V<{8;vrFrdXo{*)%$n_^SlhdazCMky|N5&Iw6 z#%o{nOo&7>fi0oZBOIj(t1ETx=kG&matl6M2|tKCK0!wvW*Pzm8)|$#4HvSY7H)=O z5tGstFK)hf#;K8r%3AnDVkt6iPh0jw6HiB=jN%h&MZT!MhwI)X!nc`}_k@Q=8Tx6s zk9g@J)^4p{4}Ve-GR5(9;_a@4s?EK8_`+w$&O_euwQ-~1|1hVb<@DqpZ4J@0#^xY7TcQqO0B)*tdH#8A?y%(i{_aLtPoAwCNfxL59e#?pB zI%xJyS?s<7Ga!WZwd8Mfl5f5Vo@84ijbeJI_OP8WVqZAlH~IZ8C$dqI)*RTppZfrp zZA_G)T-mlBKX&NNEFNneVc4Pq(^X-k?^{kR}Xj3tibEF z+dm6c1y#KD2-95Y1<+huah5Tvr|LGDMGa=3mHgq^z79gOsgle z6SWSf_~e?l-J&;(P*{W_#P;njU`+x4i$^kz_YsH<%3T?;1vo%XAYN9T)N>q?y{8VE z(3n;V<9}S)!L8a+tVdbzS5f4XVueb4 zJ5HDbHz7aqMNJEuMSV4I+NWqWnJ}@0mc_jL8M&VV7|l1Vi>t^T_Wq(9kOsX{N@h8H zGQ-ovdR@ANF7Za^N4gsxg!-2>y==U!W5uiG1j3bS=CJk@__Qrl*_!JJ>b{%Wp;2l*d zolb0bvKa8P%rL<<0J<$MiM|;Vzd}PE5{aHcQ%|^=V~Qu*!(JCETTDxfe^{Q?z9Ml6 zZM0f2c(a$Nj-c_~DIyxP=dg7Iu_bL8>o^0y4GTg9%uErN!hkb$v{}R-EXd6X4Ll-j z4$|R!wMxy(0z7X)l)pee)@bk|<&3?XfS=FL4-NS42^VEWHiBqIam+5OUOD@Oi3PxJ z6Y?YzuiR^|rko9r;i3=I>iU3!KfJ84si4$*@v<{-W_rFe(Bivt%!@iDi{U6P9xEzf zUB`xIWLFK7R@tv;ncd?_Lox;Z&jOQBV><`wEjaqO4vZA{$oT3OPT<8yO+(KF-C8x? z*le#t_hS9lh)L!k`bCakO>^?dHSn_4HHO z>a#zGDw}KfUUlMHEZAVWKNX5q?0m%Lhba0MNYN)h5Uu?NRs#yYpc-=XuU9LFWzT&5-1@#{(8 z^HU}B1^q%)iAPGy;OnHl8ViC9BSWmix9h+@bRlEMJe@{vNvO+(g0C?#Mf*#a+=e=z z@Aan^U!_7}pV<>R^Tk>|dsZm47g6^gCdUIr*;ReI)&!%FhdgzKuT&$f7WY)o(|ao( zJn17WFP}Q&)XQ!V*+GJO0@3IK-S~j0PRz*QRH>6X&=23~j|~g3jYui&MFUTjR0Yno zQ0jEzhsGOB2-luzT2$sN$(G;9R`s;`w|TWX91=)y*6XxCj;5{DIZK;6tD}1|)?i{Q z_m4wo?GK*<)xjy3d*xmRVPjcX z_voG}Y{hC=qf@kxT|ryI#J;&e{?Xq_YwY`4K(-Wvtu;tlBj{w)b$@OwQ0n5(*~vyG z{%lp-x>2WjSX;nTiZ&{lbX#npVBzwErgcE}Ma!!@ilaMeBw65B{>v(5qV5HG3>vy8 zn$r1SQBVPPHdJZ@PQ#Qn6z`14f9jqp=mH1gr7g?;sg8gCmyuK=-`+A44sqy``&UH4 zAr4mC^0b;f!vbsOo)RnR7X5y`<095R8XZ7Vm7m#w332Jg@mkL36a$I}+Xh@HJB-)Z zcsu!2QSlls%q|^R(M$!|dFICF`Xar32Q45=+xyh;v{vsBq)*58RQ5rQYWK2z=FrKD4LTMiQ1;m zkoKhBf(k$B9{^dlS?PB5)za}X~|#7 zS}P0Kvv+Z6ZolWVk$K3J^OpL=i|@-))<>(H6O3QE`F03ABegb`3I?^(5Qy8I zdY#Y$M!D&l?RalK8y)Y+m6@}{RmkV*#5SjT)SqdN(q*68@Pe*i-RCB&B^(6MfOirE z6#6ffii8Vq)rnzG>J;}8$V!a_GE<7-= zWnD+ei&w>mwJWO8LA}(z{Q=x`JcK*RRXb|e`iOVcyBi-y6!@+G_~?)i0Q<#8c#ak& zi?=KIMkz84r@Q~%j65f5#qo8h`eF(57~p?VnqE_BA>}%lvC^<5TGN>5R613<|B~!b zRS4=--Aog6( z;+Vm+fg8cZHyc79%!v&RDVFN`b@%SU-0RwoDfxYLV>wJlSSeQ%Eb-dk31?lme#607 zr*cDng{bk8TV0#u>pAf>;g0c(wtc2aUY@tQ`oLIoxqdZzE?;dy7V!1j<45ujtK6LK zywl$+eEv^dc*3QSe`sn~8z6N1yuS4{!csJJvk~q9b$`GCl(39bUS{ciHQj0&DnAbg zhp*^sr)`E@Q8tULB-IOhK{>#AV_ezF{`?`4mOLlA45cr=Nk;O$>zLEgCI43Wc^_~t z@j7^@zy6W)r+W{%$hT~ZtwxsgO;9Q6z<+g!sSi5Ux_+x_C8ZGHyGy0ZjI zU-(^8Q{o-ME<){fIV+f6D$~fP^HeErAY?z<{6?>~iGYvgi1Mung`K_)6T8Lub0SQq z4P)_-PU@_P?kPWlfRg<89f9EsN!(w)P-UUplK-|T!it8dF^CxF!guX2#HzPl-lmO9 zs;HT~Z%mI22DWQxg*%0DG|rhbcs?UF9i9KNg0mNM&=T;S!??vNiv;$5V9n8s+T2{f zl^Oi&f!mw+F5pk`4OxV^XB*xHl$$A`@;S1BMY)40^I9xwSP=582=EH8l*Y$2!B>h%v%$!cYtbnOX6p1{OAnL#U| zeLNcaZ#bjm&QSUyd#?DcAM*g4S^7$)$0P;JbqMb_*>J;r^ukfod1KfuDYtB{JT)kV zT6xDpWU>^bZ6aQ_?~(C4?kKO!`s26hDaQ}vj?ZxlsaYxOJ8hP15;2VGpMChkD_3H} zLyjmNM9-dcH*!^cQ}40Hu`ES>l)RrTGMlxyI|ON16P_6~bp}6b7{vz=3-4wWp&M*HB{8q)xY4Ug zeo=AeN@cEs=h%@wCfZMs>Ho3TIB9R}G9;Q&ydu9?0mkLO$h_7qK);g6+ zjce-TfvlQ;iYM_=&{XJ%H&9NGPJkH7I z#gU6-@|@jbpt4VcFsplSa()@B08zlgW1_b8mxCus7uEtut{*>BRl7#_4}~00H_|O# zA(26?{p^ZOecCY5-v2>T+bIVFe(MGJnH4PW#*?T6!xNaSe!u*qCV!g>JgtCYthdc# zZ`LXENoN~r+Mh$}RNp+AbEp)N_^5Mom!{}&%}M@KsIt#_nlH;1=>Xc0Ey(ic9AGzh zG#eWvjlCjw(kvCPFh=d5_FoYoEIuEi+g6|Y;tK<1#=)1EQcDKddkcuA;4HmJfc|R@ z>Ld*I)GWE?X&AvSpG##YPYp(W(sMe`~M zQnN~z=1K=){uba71Ox;WR1~BtN>f46{|WBy^StGIukX8O=428wGdcI%<#(6iTmQG0 zKygnL*9QPg%gsO({ENQ50jqXL9QKa}2%x}^EdcoT601HM9v*C}tsNMq<#iaPtU-+^1kIa>?g!`NQ z_z&S#nJzXg=B}VnZ>FJ^zUE;aU0vqZty;PUhFiDlZei-_=;~?fz;&ypu7RoHR#QDA z=AZN6w7dj?C+ERj~okK`HpaY ze;s9G^S>Vv5b*c6!@}*o|Mlbl$Mc6dLM1Xf-xaDrMA0r~TM@;t^8R+lSF)`U{ zq`!Oj9$j5ygMS!UY}MbnbE}S##Xl@||8;_YKM-C^>j*q{tB$du&MspUBfXtFb#?dX z?%e$k{XKgO42|@585$Z`?E33i%fPU3ufW6J!ix%z<^JnfR7}4&@&AK4K9X6u?~Jx+(X6xc)y3 zbd8L5?KaqIq-VI*7|vTy?;m>%3=H-d>lqsTW6wW+{PWl&|IZB5hQCBxC}sa9b$@*X zMOnD}w+_KKe`}$4AiQazP{+Pa1F03w0Y^xv%gDC@a0*Z`A;FPCqrgpsN}*6iL}@e; z8ckGOR1A`+xVWT{;7F%SO0E);{NIF7s8mrAQE72;X?ZCrslPw}zux&qf>olZ8Af8r zDuAv+uvN&nd%zbULi(2_f(8i1ME}z#D}R&$D2iYxm4f~CePq=Sy8qbk6@tF!{m1XJ zH~+s!KfavN+i8C&bk)C~Zsp)_Pk|%`PrM3S1$KZB&d+5@+29O|vJZ$&B-`rdW>Du| zHCVz9>E;+prM2HA3>o|U%e8|wuG)@W%OH}xc8%sBIZ5=`$Q}s|&*BlfwmE)F!I@!# z*|e+QZ^8?`wTI~Yb|_+ws~SkI^=VcQZ$n*kiey*@h|Qa%)ic*MoE6hF!d!cC2MZ9N zjh0PPEs^BGM$Ku$xIQNNl_)i+=vSvFPX` zX4ctr_;q1B(7dyszE{aQ^1?>qT5g!aJQ`N@Pdn!pDYlEN`3=s-oPt?*WYd+h%vkb- z_gB+-#Ae%r-rM-egKBK0fSEG6tK6=Tuqvj1#bMnY9ZdCIwPRLaKzoBZsXunz6?ELs z{g_5d-p;#&xpvB0uAggRxW<6mQ-jCIo*b80=7t@rQHXO4FMs%-#Df{Wg8NZg@uxER z4~SDGG6ObI_lhG|<8>saYB9Zx*Zw%Y zwd4<)r)!`buv(d!rG0a*lvc$@0-xc1i1?CGmR<@A=6>c@&1ruT<~l6yo3;_|6J2S@1p+|Vh$;yh**8;Z3sdT3@i9*Po9Z4?ScltM>< zKt_fsT$yl%1CyzU5W<%g5``uYMFCud0|zqDn}8Aug%bdgYV0d%5(7*z?Lnk;H*(Sh zOoBNQOP{2u>+;n`y>9Dc|(>pm|hIQ9O|e7aUouiKrX=r@?OdMI^=LWoNv(=fm;^fS-bGI|!{ zX3s50AoY1}{j#iuu%q-%VU=YV_r_-;_tn-fAZJbKbKKt6<&YCtIiUn`JW4c5hx>Yh6QBb4TvIsg=ur%XVsZ@$u%-#?d$1law8 zq$CmImSA{zgMysasm#B2(tm#jc*g{Ji^$esnSt?k;$A5}^MG@s)I?Z0Vhv`Jdq zxR2gq>J1NH`+}Tzb(*@K0z3-J3m0(vx*QFso@eo#RfDDXVnCZ+_}FLkVTa=|vA%TM z1IuBK;egF}aoZGOFlg#{W|V4aZ5tAWoT%$=0?w8(VPLavKBKjMPYE8})x1UgRk~OE zCYqKJX6^HZJhZM+M=__@9<$7@I)SK1w<|K-w1~|HWeg9{)vFG25^(1WgbrGTTpXby zIVA(c6e%Ohz^y=Er>IaSset!=flgNFiT)FTqtHmMm`WguKuLtq0^!q$6l`jg=CV4S zmnp!HAfE%N*Uuv{V>_d#qiS%? z4H{J@0gErn#G73+2v?`%r6F2Ky9|AYCjPicy`}|wlK(V3QxIU-@SaREK6e1yf4h`q zv^m(;B0n#>%wdjlxf}}J_bhr~3FJ1Aejw;Q>4Zlga7A(md9(`MKT4~G9%mURI-x|0 z%B=YD@5T{l;{TQCLfj){ppb`58X)y3G#42Wunt$Gcmd;Cz>$=kng>}V#RHfOT*o%6 zaYSm{?ZJb7v@$E7;(Ag>$#Ul)lAqFE{AmcY($YudLI?i$LpRGp0O>o@+GJ{yWezz(D@wy;LarYs%iIS)QnvFu&evoUWM(|R+Y`b zeokVMgPD> z)k$WcFEC*r*BG~IoV;1aaLilPNj)}&8{C%dr~1tNLd3fU_;M7EClO7I_96d@0M6z( z+#wHWXl&O}ym4|n+1Epb)=;5E{5&8?QRr20E|f%p%w{1Ah3bv{R~8E2L$&@(AV*dL zTC7c|=Fm23Fs0rC!%Ccq5T?O2&xj$U(0RBGGm8KLBj}|PLb@6Fq+6XS>J*t;rPP8s zORw9Ex0$CgMGUWf0q%A(H19ipAqk48i{Ihh?+M-F7;xD3hxbUIVD-|5!X?5#syVb3 z#4FkqTn(qWn@n4Md|22c*)V8$&tG->JQ;}z0MBhE!(MB~=Zc-G#w~Pl*5?AW&F|J1p=<^^PK-+r^ zaJ3< zdnAc%B(>>{1g<9%f*#{Xv{_ur!=)dqh2>KWmc|!A z?+-a6VA8)MUolLn-a;Q|W!dy4;5Vmx+a#-J>oBv2o2_DkK~G1uyjyxjNEyX7NPVzq z9&qCyo6H@P{HPvqe9UD8J#j6xS5e&2yu%FK_4ucu$GSPb!RLk@{PnqWX;@ysyDufU z*5TOv7@~B3A?OV)InueEu=RQCZFd2%ADI)}^@%qAkHS&sD2LkjXm=)yap6bc(8@Q| zcOMdSmKz4#;+xe{X(u@Jec_!nzuTl^#2{6@G1zdrUy9fyPWA%mbQlMaeWF6pBMRLO z4mr89;YXnaLK5;+R1^i^Pi(0OWMqJFlf#%efV-q3m1o2}g7CN}nJBJ2fa@)jdSKZN zgei~H>@iIPB8|}N>0dK2N&8_qSbOONVVA}99-ZNfb$5XuHptm}hqM9T^Gv<5Hsr%? zd0dID6?cni^DvB%4AEEhBeWLEn~q4>pZ z^Ar**$I(K^JCn4!5Wl%?NOt1Rk}AsnH0vU zQU7Pn{o?E}Q|=dD_F^XJI_OT^Q_svaM&8eL(s!o+47B4pYdcJd{QM7ybEjB52rzL6 zefi=|5a>V`-9<_RQywCKC}#zVQ&6~2R$RA`Q$63M4#9=If`om?IuP$bwn-wqZ9?t= zAkBpPsRBCLF;CU2#<;Agu(`5|%XZBnd@qocQ?kB-dg|FX^(=LTfj$&J%5=Z;AW|1+(bE%A56zNb%tW(7Rz9V#~I^2cEW<+v9bO^-n1_)#rm=l>qd@3^(h$9G!?Ok!of9fk8DyER+Ap=(kfbXv~ zoFEisppXgK$B_oWyI&4~M}!Hs1^Q_nN#51b+rWH?KIev{ZyY>4i1Y$wT*~bw?`jaC z*LS8$Aa9(8tGXk}`;g%b4pQS`T8~)4Ibc$ghofiF5U!8G5;(-Jr1{icVt)ZUF134{ zh(=8A28@P(_=Wb<(tYGmTA)!kUyWO=yY>^uJNNB&^=6h~Z)qIaWviZNGKYCoKAjl> z6C0im9wphVVP%bye5!@Pi@QjNgeu9{e`XzUbhnCF2fAVg-_;YFPt4>q{L~T%d%tqb z-(>bPc=h4l5t`0Irx;QyDw2mQG&Yd_8c%WdkVpsMx}p;ThCA_j8YM!0K~Vv;Yno&i ziZk~@fDMCc9+WY`3g@5*{zcHZ2?_dK8Ege&3-L9SG)YW2NVdqeU_+A2ksz{9mb%?V zDUOSz9Yykzu7OEpY#ZSZyt__KSs?0m-OzS(tCb?V!CK>S} zSncKJRh(7N23$}2a@5in&py8bPY=8eLc=L z@g39uTz$W+Wp&l{WAydZ)qN@Sx(Q|gHwww2zd>t>iEgGL(`c0Ja%>{GNc00_FFlk> z7~~wG9>Z`Z<+k}cOn<4mTj%yM znFN#>?(vJ@zqMK;JH!BtPP9=?DubAPg>Db-d@> zLN%y4lf_Yxa~Y&=PR@H2jwJL;crG2GscGah+T%c=R@OzPVU-H0UzNo)ss}w5q;YE^ z;V=D&Colx+i1r(5Jck?4*+c~eU-4*;MzF#>g2Q(_P$W#;{JWt2t)dj@LILC_RM77Z zVMRv)jMYd*Ai@G7B$h$0K9xTZ}*Vh*(zH+z8VdSt8HR4(4iPU?}^x?}-bQ`mORe5t_`YMqiF zw=HvDx2v87(;lr(S4iK5i|6-g#|z}FD>poF{RZ?vukzhOQu?2_z1#8Ltf|+He8$_N z2!9}xUS3-aV>HVd`zrKo)yO+zY`;?F7sA^{pqf~8kEmud#u!M684)(dw5sSEq-*pV z5bL}b_y*4}_E0x9?nM%|p8z=_lbA*e-KyIdIW< zp*>rXI|_y9TyX*r{QX7$2dN{0A{0Dq1R$f}r$rEeTwNe(M*!wQwsv!9FWg$NCf`rM zR`;<$Urtl2j^`Er7+3Ol9>!_cO-|z86k3p>G$2#Rnh|`A;|mhH!t8P*H_+1)4eNDc~{-H&Upv0Bqk2FgLIbz%XLzT@O}* z8w~LE22J`{+DB*y^R^@GUuY`-Y#Tz}gPt5yzcMiK+yIP7HaaGkVXm9bBRg~6&^-T` zY9hTYep1C1xmC#}6>n(X`}X;mfkJs>?%_en8&{voO*qiJ-_(LwFXIP;C_BeB9O>QI z)sZ6Szv@Acn3;-?nn2lUY2U0sWO#P)hr!D&nL}~k=-xXXZ?m*D_GBB zGi;?iiD~S!uPDv$U}--sVs?^t#i(CAq$-8sGR2}@%3|ylkBaW0`ZJm8?v0{!i|J1B z6c$>^@xzm=8K^rUFeKIrWMt$iH2$9{E66y=I_`HK{plZ|bAXm@h4diPzAq#o6akH( z6OfY#kb}X+I4$A|==H_v@*tROdp^XNtH%5}`V04X-Vn+gO3mf*l`1dI@kLagkV<~R z1q9de3lVD{k{Ysz#%se2+tz+8rge|;L zdAIRO;Vjkm_q}q3S>J$N0Fk>!dhK>zNzeS9Cbe<&meoS^>21iacgtmkE|SL4))_=} zQ_LbnK;!)k&q46&rI$t*ekf4qJ(;`ua?v}&=s-71!JMNXk;TPq6Sv18*5`e3gUcRx z;4zVL%;*+oy_P6WoktwdQe4Fh52hvZw(yD|0A{*idnr_5kN{EK%JLTk5$07_=uafF zV(S1QTv}0K#!3<);&4?UosJ|kS+oeikscHql5AknK-x@*d632BY|J+6SWs2I?3sl6 zW3<^L6-Shc2s8;C6451$W>*~Re~KN%aUt7QXvI~m;5j82P;h_}ifs`iq6mGC^A}#0 zfHourw(E$!B3jQ+k|v$VTSFk;FeG&=k57BNO-Fy-KM%JCi^K`%;}e&~mwU2=oXP2w zU#e$kgO}ZJ6TZ}71~XL&MB+Q?OqlOVd*<6OR?ui-6-J1s9QX#>Mk_nfbvsFs@RF;G zzWaFR&Zs+#u~d4eO<>E@83Ps2mB^B#AvFq44*zTlp0h!Ib>-x@*YiH z^vnE#mwoNh?XY2%V$7DkvS&XNg{;>_X2gp?eNE#oaJ|l*xX+TjSCPAjS!?DznnnM( zE{7XgM&nXz2I*{T$7=C$teof1k?;T>~-|KE>sp(vr z^?y(EP}7L==Wph2eZ4t(9(7K-cbMsAkkmMk!B^ftIvK;W>56XS<(zou=*h9GDesQV zCH=C(H;8R}O=Raf5Y^$g&JL93%Ub<(EFbeIby==NveZ4Ds74EONZ1Z&@N7)_=}s9x zfZT;g9RkUUgz#ZPzSm=jzP_RrIhD90SkqS`mKg3}ZN1HxBnrOp)Yjo$gc8g$t;6km zC{$1yypnVNuE|0`Z1ATN|NDy&7k`gmWv~_)S%~xigfPc9;$S_}NhyNq1uqw+6BCnQ zs!i-OQ=ch2JW1QQh6(EoZUa5o4%b3V8%~YmsC(@=!YIJZ9_8X~8>@cv1DB5vf4GB7 zPc{g=8%HERwv{HQ$a34C%o1u0PkuE>f4FBlAFF8?w3#Rhrnxx}zFP%kuFci*6|F1R zabs+d%#qX_o6pO5U0&1@OFSX0uqc{W(wEUd>aw3%6;>fN>BXyOu`v3lajH%1%_#x> zbs;Apa(k^M5}$tXydOF|(qpGYGKw~YO`{cK&pIw4HiB96VVW--CZbwo82q(DyeC}Y0&OBwp2WW^@4t=8!u&m0 z$v|T;jFl9}6)_;7FJe1z8iiE3$)|y@0`GPiG?-jB3!cXj4}AdR$q|HzXhHje%9Ns# ztvMR)PQT?V)m&5|yk9|l4QI1MZS~6y3zM{iQ@?@evsuAvGvP@OBQTwJsUwmPpBoM{ zZC9K3qtjOw2PMty<12kl5fjU%#OFoWnQy?p;^dI=@zN%NR?vZuAVlk(VH#%np)m6- zUF$=6@y1Z2_a(@&J4D_Pq?x#j>>#2(G?Y8u**xi4(a3f29@%iaAhH7(&e@h0x@C!RUKR zZw0*wjpE+~y)4vXn2Z7l*a|2xZ6b6f9Kb+Q(F{U46)X`(>+tp=nJioitefKaOzTvD zCOkzcre7%smO*Cy?GChHZG+oMEK9ouhGkRCbps7Q1=AWf#}T<|0kgDq?(>~u?bWW@ zBrPO21r4K5IXC7j-3U7kD~v|pK+?9Kf%ixA*XwjmP&;n=i+*v}u^KKRGMMBy$6uWm zoxCkThjPtl!*DmuGXEMW5I>dEk(!3>7t6o!u39`Lt1(5cZE~uOzAxX_7-gSF8lK!Z zk+%$vpO{a@-0KgOq3P`%o2X$$ynII$(j?M92H8K6De!kCr6!0xLb)BcA8VmbF#VT2 zK%O1TFjKG@u;@$!qLgV$5XA&b7K3;XIu3~QzNehTbpEscf_`Bp1<0)=QZOctO9G4l z6l5M;1t12;z-O?%6MGEy0h4wZV6=AODyChS=KUDn_G!dzuaZLp;d3c%&XsqxS9K6+ z+p9DUD-mKzVvAt?+s&oNsS$Ci^R#VYUu=M_+gU3OLhNe&Yp{FYlzEX@&i*&ZU{1l6 z^6*cX!o<}EV+NeY>epDF%`t> z#?iwMemKEX7Z%+S$J5fj_JlLtV#vgGA)aq=&9M6Fkc6pIs<7s+A&@U3l~dxI&eN{x zZbNdkWbfKjuDqMZa`D)_L8^H=Qe1Ij3n;Ea(nhGpE(l^P*GX41Kr;nK_;#?2v&2y$ z8<~0(G(~*H9j|1VQH1}m1c8`PdH*cEq2Sm`av9-4=o|*9YKfW4$Pash z4nTj)*DE;81afw^V1wyJme|$k)(ZsPG~jM8Q0e}F8Es!;>i=f7_!!xe?`MQ*Go}Jw zN1!39nc!~KuiepTV2Dkz9_>WxRfr)z?)rTHZV_+mHQm`NrED+|dw*#p_g34> z3CBl7D)#xpTKnc(Q#l~7^kNw!IcL0=(4PsN9(_-G!-BL_1!uFY-8Psm<&L9+-px$C zB(L{`L&ZC=`Q5=_#jh#i{!MsSNE4y=;y1*ujq3U&5PJn!4CE?$m1DYq?G*z=i%`R1 z?PH%%JVhzu5bp@-h&Y~2!*jr1dEVadi9TVrO1MIV!`}$G+D{>L)H-33?<-EInhWU7 z?`eT%q<#$VXBFHBSH55XLch3B2yesF0;Rvp?i%rguKM7EUP3w9!wsetTq8_dWZ7Nu zeCmOPu0}x5JE`3%Sv8gi=wIA#!&xeyu>MM9RIQ%*yX?Lu_tX3&?ZhBE+1wnHIUX7o%{l!Bi)$?AA3T zdHYdx#>Bl-vi0nI+3Kg5O_eKg_e`1ivk8v=AG4SxaRYI{aQ!mzGKFFn@p3dpluir@ zi^gyh$2%d9|6Erh=D!DdLWqIj%A&wMuouYjX$TXnS_XSXa2lzihSNrnY7o#Mkd`VS zLg&k9ALhYFLSOC!M-f)sCj^u`H^4)V<51wcCk@1PeM;r{*2yJ31pCUbU$@26{57Ai zUULJTo(?Q~{@WXBaMrSB#Uo;8!7pPr#+dUnvAHk6>Y}TzA1}aA3?2v2_bL3@z^w zi3At=BGVuZb>r1EfRpve30@KLfKVut9)wtOJxo5YnYU!B?1;i0F5Mo354P}P{m;ktqN3aVu^Nvi?I0qnJLCOB31`ZOjcsL=jzbV3Eq{S z=zSpgjbxR3ncDq8nvee;z7(7YEkG+QUoIIo4#<`m%#L9DBHW2R&0ikc-V&?{ILzpQ zQIDtEbxdopSaWnleEXF;V-!xw*wsgmx<~ZrzRx~?_KbYpK=__dGOH}5~ za5ld*yhtju>evT@#0#R|P`cx*{GLoxvhI7PzzTel*$YebYS-IEB)f-bt<1_Ga-^NN zUU|pl8jS5Jio-9%8ayxixxqnVgR4*00mRbS?F}v0Tcd|+h1k@(^a!i)Fz4MBew}Gj zT#nfMtV}G&5P8eQ0^)?;Y?0nXHAax{dM_!2L&8+p$|`*Mlb}HUDVIzL2 zBr9a#ZRL-bN02J|(MI6KPAu;38r@Df`vw26g?UP;X^rLfV`xE5PN1(lXc!N_0sQRk zyPv*CKSt(4l<%=&nL~wzY{TS`-`sh}Zj)Upd5jLQKdCWaa{NV#q(?&${b*HcCw=3k z`eKk+-}bW1p!m*2i|oP>-F~8);S!Pnu0JG7*8#7oaoXh`k-M<|>F@?KazRN3+zrT= z65vc2_%PM~#p8ctFtS(Z^o3?Xm|z@%MNy;-Yy`*x+M;v8^U0zzL8W)FH`e3V=47*FV6#tLH=RwU|U8nXgyV$2c)x9@eTFX zON5glIR0*xKa8HPC_g5+wub2}%++rh&$F1+&ld?j6Lez%)AI5gwQn*gQ@8Y}$aBNg zs}jfPg`CaG-0%@3IOlDnKq5T#L3!o{JgGQSEgF4$#!z#Kl(p}kT5E#7Icw+qTOw^n z-B+`*v`i|)-Ilb`uwF)NP3~a!sp<~5{+bbvo?a@gX5?orwt>Mnn4K11yhS{oFu>xrqHq0hLU zRIVcXL?$t&2{Z`%C?X{QuN0;wnM%kww6@<<9KsO-`IQh!IIf^9=(gmBU|h77A{?y% z#H50Kl5dFgpOpx`Ig+}ANk2*WI4&XKEm(54Kht~n8}R(b<}UEy$uchIW_?ni#N{Q) zR4ss*rqCA`2$iSdu$pmj>Y@OPIx!AjF8YDjUN-G`$MGLNPnhA}K}u)Jlv08dKipdq zsM!vdl1kH+zwe&P1#Q}oy&{&7ycxgvF&!`(cqMZZFL-^&vC8Z`*v3@5k)Ujd#JHqMm03aYtSV6TA zLi`)SmJ=w-OeU;HQxF`0eHb4|u|!g20Oj*BWWERegH-QViupNTVIr1y6{K(&*<-(e z8TzL=(BZBl*1KIt{M`OOhLEK=8LGpW2k3z1esC^$rkkZN^^-Dl^|LM7F_@7Ysgx|6 zCqN$+B*@(XO($+BBe2{*Lujqz?qJd9tsNII#B{52C|75Z94K}V?bxrZeJ=_1`8tN~vP{+2>~siEoSu($7Y+i`x$k z^A+z#r|}gS-C3-)wR1?a+?6u2tNFTqE9K!V1o5v2?u;ink z6NbvfQ;tSI1P^rP7SJLpDU4m2^5a5`M#FQzV>Fxq!dn2~2I+g~%7?BGXh5dZ%a~#y z7(6Ah9#o&HdH@uMF>T+|yzjl9MzRSbX^!5)E57{C9)z-82BGn3lIE852ZwH?EkTIR zKZfP~P3PDGk;%(_Ea@lawSh>HL0?cJFioACq^)f>zR1~Rmpj!YV5_`6Mz(Ud@2q0l zsCconnxk-#}s5Xuq8OaFuB@ll@G{1N(vx(c?76v}NJ= zyL4XOvzaf%?&o2g&0_|)`}53=s&>r|8W+5n-;L-gZKT@bPQNkr^n;m&pvo~m}ftBa8s|0+M9|D7A+cK92}n2B>?XUnF>YCErj| zq*j>i1G1?I;K`%paldvld!4a#S#!@x}z^vh3-LmLA-2L=fvrXqTBfR}tG z?>$wg68EleN_&sA3zWii=fTNh0v1~~yb56+t}$pJwQE6ZT?bQcIFIQwa|6v9i2Q^u zMg+xy*2t&_nEth}GWqq_xNRkAq*90CK@zi#_QdU~yk(Z|0JfIb!wdLpD9=-z9K zD+DL1Q`-7z3AJO2$l^|0uWeQhgl2WT(*ElwfUnWXdJB-6?qok8plxuoRzh4K)K}d? zEO&373Qs3&8lL$}=yD9wtKtd63;nk9nF5;)t17D6hb-?O`rVxHle=0HI<(SSFmZ); zc{B>M+FFC2t(j=d!q*84^M-6)pq29(jKakJ9>epU;%796_q420!TtOR25i3UDqBm; zBTGz!dL4y71WKK>Yza{s!A4r-c?F0A1$+5DJ0s-25QqTYUU^{xn<<9y#ZkWcpYa`^ zM%^xi$`GFz^QH4Kz*mdLOwg=xAW7_aBen!g8#y9j?E;@dGeW-;TSBjn)7;hBFhOYH z3fhms3dzEg2+S<@IjPIKQJSxmq+Kzib89tt<&!O0yMHU_a+wR7rm=s$d)7`MVcFJK zcd<+{aj^ZOLX!(4BP}+LXwxb=6wlXP71q5tPMMpYO9ywZ`l&p_>k78M%*&2O*vWMr zW#}2Ysk2Kt+UuHFi3U~1-07G2Fdbo;!x5_r6ASqSF5F125-@&Ad^+(F*?&4cW)e*| zTl<1#Fq1VvFRDfZooAl|_5nw8-1!-sVe+_>QM9Eg3s-t@98E77X{;VczgnC2oku*Y z8VHR$u$6V~;yC)&Fqh<-JO!8Qq2cl^9-`aLQ%?IwDcDI1b+K5YS?P%_rQ~t&iBam?u!W6L2?w?mS}FLn;OA#jZ@bfGg8pQLu2D ztQ~}FoU7=bM!E$`fyxVL)WereE?8(|B}jcx&5K4JE`aiGsCYb{T6?cy6+L1Aky z$$r@$jXa$I1%7yt`ViIZBW4vdjaH&fswt90esi@r;<=x(9vY{0irtput%Oqum0 z^rb7_^uOH(kd5Nd&Zoct5sJN0CCG;PA#E92^hKsRAhFUisz6&u#JQ4*j4yOb?v;yK z0%n~e`eS8SLrFFoRWXS?%emtMD)XB2m14OZcHM8__E@|QHK0@l_wKSZV(6%|h9AWP zpPRWuN)NZh0|}o#SR#>hx4IXO*tunV8Mp1?2Unz~UE!VtKNo#fxCq!NR_{4~S*%=<*D( z^sT4~{szi6-#OK5PHGOel{gSaSJ{56CwRx77I4Q73Y6bQnx7XL9;+uN$ zaU4oJ0SO0iSh)j=YkD9|2NHZKPzI>3U@P(ps)OR13|=}9S0Y5T$Vvd4HxMQr#@fkp zAHnTV@>;1fI1Eb|ug$ME?pIRTWxs|hM{6v)1aFN_+IoY~ zPpz!z5wi}P2A^X;B3&EjI6iX1$zv{X@?IYXoSmqjBMqgLc=O(Y1e(YTIxd(ag%GUTLXx>`_clW#GF3zL-_07!%4vB^bF6ig43HoPS!+A{l z_27UXhrV;A(*iNL8B{UWPv4ZloV8_}TPUAFIBfOl5&P65xrjs&A`ih10e0d9 zVe*J@*nJeHK|GEi_Y9U*^RcLlrez`y>Fy*Y0Gj_X4G*9YJtF?0DTdh6M%c4v^i`G! z?aQs>WQS%OM_j)0#@P-&CFh)wLFnb8AU@U4GwoO{V&Tope0{Ex^GS*@ zl!`5w%6m_%9DZU>&|gg1j6yE037zh)$tgrH^nbc{$5S8JX!R$n`+sS{T!N%-fE^nb zl1xAGvr`!&)@ohYOE|1w_%%rhoNaig7G{i`bq*Nh&>Wt&3;bVe=ulqn z^G`_thy0(Cy$(UlKYJmv2U<^`MSBk(z-%5^4o(#GBSIg=S3rzDX9^N*MHkNH^z1YHVs0G930*zT zBBrAd3udW36cHw_M`b!J2yYNyRcAefLr^b-&=le!vD+ln7pN|qp!O)r6XpUOh6=v< zt4+&jo!CiSin#R&jk+N4@ftxtUI2#4lVEWH+#eRmwP~vmzJ`Dn|J*Jj?f*7@O?DjFn(`@c)@J9-2v*3Aj<&%mR`vyc#U7wGc;*y&DeWt``Jnxu z{fw8p;iD)zwVev?wJ?wAQG95Jz!0`u6nUILHr~{kHUp1$o}nM5l=xnYC*+^mXAt)1 z&I^=mljpHlAS`Ix0&*ZZoh5Zyw?(obBO(EGRs8W8bX|u+f*Gbzl>h}$ zTVyDNl|ZBt&&HTGqzF@b5lnPS+yiz@x$Jn{!and$i{TDpQdRl=IZT)G(pP=u5cw#X&9Azm zANgAcYj8F7jjp1_1-hj7asxb2z{j%FOv zt0jsYCk5ickJTJEB)Lp?g;3i}$@Q%)kp?x`?+`EF<}C)r5kMfNJy$ z>GQnSg0$A%T7j`i*%M>3Xni=gUpfO6=S*Uskal$)gMh}EADI^0^!iXQBP?@l{wiRLGiX8i=;0y2-(9)1S zO}H|L-t(C-`ZS3ce!w)BkdueNwOB4w?qV5ju1qO-zHC!X^k-mrHMkF#I1OaqzhKek zN(f)Aja@CmJ|0Z}dfUBu^lKawHP_BqgG&gxCG31@?)j5h`(aMfYXO(8P*ciNZk8EOEc9Yxu<`%Tm}!Ioh!WU>19i@K7RwpHeaE1f2z-EC$(dJ?|?g@ z)j<$CIDC4j9WyBQIER%q!Q=)hMsf5d#3M4^V-i|d8r*s6L4iX`$--We?i^{AEJ7@} zFg2TY$v-*+Hp5KM^oZ+Z6gg>gly0YXunY}b#M=xREUE4O)#73M$FW}*PJlKo1B5+t zvsyOtzyeamF_PZXA~}ia>OUg##<6ZyTt@vuW3Wni5A6%-2(;b88tw{tvFwS8!fgL*T zpRLhp*6+jJ?-8>X^4C&xMz9$nQzxkxrs^ZW`7K2|?=K*J&i8BfI}6tMU9{xRl*wE8 z)ZbQ=?UFB2V_HUP4Ib)pUE&#;oO{GACSq?K4I>%C?wlzY%T`y(k7^PfH||YkB^dx zP1^~dnDN`V@6-r1v6W>8StZ0~6^B4d`Vd|HIcb8qFN26Nj>aPnt#3peXTxZesq~7t z(IzpD-Q#J$p-6Bv2z98YKpnl>BL4>40z@V5A>rr@6W(PUu*Z?T61m`(J)rhr0nwnk znJLzk4y)uN^za%noYhev4uz3?-84vX9LP_ClNb(o3=F2c<>w zZi78Ubd$)jfA1j@-$2BAye0|z9z{@TqHY)quj2=9T*bZ3DbN$c^ z*pGuIi)nBA0{h`S7??v>v^7iN0eUaC;WH`M_UdN&8}!z#yI5piwJfZ+ca?6MFy4Md%2Wt;KxweT6>9lmTq&Mdt6i;N zP=RX**09tY%cL4vDg=(R1){PXD>C;hi8JMJ2wg~Gy*PXzlBCq4Xp77mmIz-HPag*q zQn`!B`vfuw?M|_6kAsn4aVMJhE^udwr&S3?By2%z@POwKJFu}#f9rL*ec~S4dqH^V zV}xzlmSc~M&^&hYu1trxpnU;~aw*Fp9q*AfIUKAuiFajkt#gXpqZP*LrRDxUaO&Nl z_>0R;xZJ@l<#oGX>3^tQ^40j~<_sE%Z&@7~Z}6$a)}-Bv!l7x>q?Ts@sH z?|8U*2=%HgfA0N>kbhfVYH>yIz12zksjR2XNpMIm>FO^xfk9Wm14r#~N~y-#Cj1Up zBfe@IbL;hoJqsXUJTr`G@*<{iZlxgz_Bt61uCzLpJl4yth0kNvuG`X;P`gCz^wVG6 z6G}-79sYR7lSzx~yL?QnZmFSxqgmP4+D6})J_%F&-3g}atASn2Z!dt}=Mba3wV>p6 zT>Fd+Ca%4$0CQn2lZNSk!@ZZOC2=AosV5zDIpfzOL+>Rx?xJ1Vg4IZGvvA>lLdIiQTvZlFu z^>)&?Q&h}o5lxw-#4E z8@uawgPncb5qs8@HKwh9dXnZ5J&C?hEljBf8E(ZsrFVf%vtlT1qrzAwcpP2J*BeN+ zGvTYny9)F^r`Z_AAnf48_3y4wE?s30=Zl2ddU*~+U^1x*#rY%1*4NGNPSxX*pG!CP zW08|-Q=`;pnkyYyRfP}caBfqEtUIvvx%Sb40)I|HRIf3bB;+?$$ZzCSomX#icBc|d zygIyS?2)LAyqJSHHBR|8r$`5?3!hvb9qXwc)ZCao%-|U>8p<_=ycIB(Jz#GZHc)Etk+1%O@g9A7_$^`Zx*@VtLiX}< z)hrTvIYIq4S^eDU>yY0wrb^#T*DKOBg{`@TCExuao+ID0FB}O`_+^=Ne+M+uO9->l zZ2_dzr71!sv>bQVA=ydBNPRtM{jCrsB?osCebuske5Ds{B0%e)2N`JzAHia2S4)eE z86%$&Tm146e8P224^>CY1F_2`ady6pBm`2~Gy>#xqPRO0n04!T<{;08)P~2PpMi~z zx*IUpp^&B{V%t9nq&$MDrejBtFiF%8*VYCHwKu~wOXRsBu_nXMyo`fPxf@OOz)0~k zhuZpucV+f+Jz-Ma?Ln#xz^3VE8o;BYVosJ!O})xJL@4KZsP>~y9IVE1bI_pVM?2ea z!RFQnT@6EGbpvmx3T8cpH(&#x#vXW%l%Sb$n(}@j!=?T=hD%RQXrxZUET7v2TrJk0 zlsJ8{61WD;H4t_V=^uT<1agV#T$@SKIDSFHc^W(8_r(t#UC0U+Nsdf?NZ9!mJY0{> z`MoN?+OoR1#&Q(4n~hf{khffIZ2tfsgZ3yd@(gF}Zv*zZCzC~zwQRG^pzm#Q4tyv& z`?XUlhc=vgdl@ereCd=)=rxYIb{Qj!=C4(4NcK}-qYvnn8vlKuIO3!p`g<=+TIndP zDHwH1ey9qb*aH9KhA-1^sYUL$x*?i<>29<1 zxkGY{`A)j0K%Z$EN9MS}Yn7L&2NJ%0d=1zD{Sjr6gil1-`VXBnj;PoIk_0p6Q5;VJ zdz?Ctj&%y-QBhHGmi$`|{UKsk%4APct6^FaRKYgVv~C+bB%L@x81dCzGS6Zoy%|8w zEdkH#L~6#t^9F*xN1$}BU($#%kKPU`lkebTDUAo;pv4`y*wYWQXh4O^dNihk>2tWG zAFZo7sYkQ7xnEu+5pjh`OHRXNr&SEml=fIZ%IE@L>P=mP3CMiRPTeap`uILqpD$K9 zc(*Ma1T0#Z^0F3Oxuz}Hv)l4Pqm;h;R`ZChnr~s5-o(E7e9ShYy!;?cNpJ(a5O-bZSn8hLY zpIyH2j^{g!9W%k@6Kgyi`XzVz{Zuzi4Ka_Niy^kR7yq0h`QX&>DR4P#;Ecj!UXEeV znPnuiZSDbV-gA$&|Mh+-CH>(7d|;ni4ARu|j zISNWtqPN<)H6Ld=WcK7%KRLDCN^3X{8OQDURC=(lx`$b}!=c95_8C#yRNdb|;@d_IusQ zLD2_M0+b`Za6*)HGQvEAFM(_kK6nnH#>2be+7!|Neiu@6xXi#$QH+Db?Z$cZ;G_x) zu@C#>ZArsJY2jWGpJ4V&I_%YtQ!Il+7+zn;X%{pY0=4|Od?4jK0$p{!1iWZqIjeC4 zvP)dSuXBP!?kaY*MyTWI(k_Jl1>`QGFV|-~QTpX{fDy#{v4O zEcV-}Od;31Mz`yui7wPyl}tfCt1!<~L-#jpwOQiM7O8DS#~;1wfL{4>{ewkTS3+t1 z0ovgdFk=WAXVmC<;H8vriUq#w?-w9G35%AT2suGs{#w&9e*>Ub=PO!2 zKu{SmlxfI>jhxGEGNv+EhJL5r(>C3JVOU%G%;9QQzN2RHgWJH|<)=S-7y^br*&p2m zw~PCRS{e~oc@HTImIzxW6RxJjKiEw%{3?^dtv~rtWut@iWTYOGdwrfeV_5QV&oYJN zvD(ln_#6wkfo=Wdf+*@A*59uvA}W-)YED z<63sA;jQ8r-s5Ld@ymq$p|Wfb- zg=Ug3ODGv}#{NTp#GUR(C2%?ny-e(r$4OfAaKbHoGQ-FxlLy!;%@ee+$8C=L5Qq|F ziH#F)kS+6B7E1`8FbU|J;3LWut;R;CLljaS_RqUOg2TlmWsq#W1dLp26*;gh`=t$p zPndSV;(H4;?Qat%S*@k@n^978_xe!otT;HNbI$=P7Bd1Ec4h^;4-f&J_*teIjP zdCi~MJpk@KbB^dCd6rm3$tprhdli!p#6G2?q&tf$SZd6zBEkGV4WAqo)8e6VgBVm} zB-UODboV+2g~|wROrLi~EOOrQAdP4^E7NVNhHnfvV9hL!=Gf`C_Ql+^6i zMC)Hj#iwFdClUKwx>YtB&3rDIO|3V&pi+_~w=wP1iw{Q(p|cleW#{p8H=kh(bR?s& zD8zzgXka>B2AjxT(b`6{!k$!v7MD?r;>Vltc5sr>a*Zk+;8JEJ|22W=B(~8XC6TJq zj{U+$FWVc1fEr_RpQu0V&Xixd$wjv7F6dstCC>>?YAGu1q$S_>y+eH7l#1~_iI2(x zwYNV(+wz0;?<7m(2sNXn0!t6!*7(xJBAlUx8jTgIcj5qXk`;vvLQfF<+#RSbZk#{& zf`*2vGh6KPbjw69VjR65Gr+o&r^PmK1MbZ|PhQ=G%u^;&XL~{1THrNcdgu#4MaDU- z;Y{l_+*Bv2tn~@vD6<1yw);p>%15p_PP3c<^CM2~GxqlaP6)h#qwjbUWEo_TVtAeG z*qON$FFW+s7E7Lxd=R*~nKdBHbin;;gx^=-ILGI9}>{)it6 zJppOwl3j9duvD>+${%YMiUiRgWUaxrLH=)GZ5y_L9_=h3rrDSSM_a)Nh(-AI1H)?c z)G(Bw@6+)O8N)~$ZEmn?^en`G52Fa~1`da8gLog+eG8P^Ynqj)=e!1ny%_is<}R=u zvLA*WRUW69BY(GW;ReAgxb|v{n77BoAg!WdX(3H-++ckF@V8P<1K zhVc^qZP7~Jia4LU-5LO!k#J=m(__#UjSjiGeHG4xD=#Rs9zD zM8lqQ-)TYYAfi1@dWalY2ODYx^%V^W$Xt5o#7ZxHBf+whmQBE!${k-fLN2?>wRZor z{0EBg%<8v>OK%z=a}sU34YGzeXQv6fB|B6QfMLWz;tUJGHlI{XK^*kHc{+_cPSEm+Q9LIGiFz+QHK5L z`H0ihJRU>-$7sUsEZbX!Qd@S2(j2%1$L*ngH2(MaT=F#oxEfgA9{2>uC*6i)l`{Do zcEXLY0fw~wFZhHe20s1KdxBacYRnhY%-@Pdgxnz=%nl%(&$5h7XArS813||@WEWfr zMcg#7i7Ab@f`zZY1-a9Nejgnj7sQfvDJ{|r8Cawfwae&z+JCNWxVG63M<$#(8yH{|EaxNr2vSf@Z z9blB_jeu9c)M5_KCd<8DR9R4d! zN=<}iQz_?HFg>WDE3)oSSyd)q8( zS=a9js6*}=-HJr!lpJ~vyQm?HU;7I<{d8os6a8Wtrz0`oVlHs+`nouBqoTNL=If#h$UdK%=BYZWeDKASWm;8w#F~C8iR<;TXQ8{^U{7krh8CY9HRURv^cS06g`#{}SOA4&Zp1-L^(dka2 zL-C1$0pV(bM7yz#Vek{Z<0^|6t5LXg3K7|l&N8r9<9j-*REG}KJ(GhG;TY~! zssrJ8avyWa?;;p_Vpjz|W-StwtWTicNo^Ea1HIN}&RAQ^I9}H&!;{UtjT-sEl;dSz zKzvr89jJ5@?qeb+E@w?Ba>TRsRLIHce??D4wDi$aXZxv=igh2tZBnn8FA$g88NZDR zT<4Km1og#r9#HHb4-7@*>sujVq0S1Z>V)hGt461hv0+E5`MFeX5 z;F|!{z>u0$97Xlqy=9M{%I>q(c@6ZWg{x6Xb^SgX$NOCJsz-t5TO6v3M-%5cw`b4WqYoaQhh~wpq$dy&?-=WH^=D3$#k?ue>qQMK*X?$ zdD`6+GF0uFz@E*%A06uyi!OOZEyjQNgPtrKx>wAT?tgG%Q9vWt4Rn02L7>3ip<`+YN-MliFdoBB$t{t;Ne?i6eS}?!U~Jo1dOoFlxZ%y zy@?nUMDb>9jYSEr6hevxpWzz>$U+5foicAe%-=V-4MJGX=k{3QnCZ`D4mtI#>OG`j zGfuV;T7xKN6&^T6x&zML9`H?}(%4(lH}iy~Kn8)n*$y(q-Z=%ZgnTN@Gx2Hc7;++F zCqxmzG9j@+*3;1E8}QW0_Tx~_V=Mmok+ao^Xk~EeBKTPB(mzf#vqKuN<#UIo5lhwU~I2TkxFXq=i9_#OG*(bU##*3F>{twOg>_+rp%VG z$**8xZ=N>z*^6W>A6QwfT+84cm0W0pj=u@cBn*{B7PkSd^uwPVEcvGnc_G}Ft!rr_ z?0vQU5%MBS+n!{J+}+8QuSJx< zTED`xNh15Nu?dM?n1o7F1i_=g=k==R_=fzLxZGpmU5mm%U>ou^Xn0EmwmX19t zo`fiz6jQ|ayvGl=v=o(i6Hb+c(ImRNLK)=2(8C-zejMwCG~(KG;V{5s_8Wc_W2uYw ziec}fByVC+iCe$kBAoE9@ydIm(-FxX>=(PSq+}kyFKr9j!eZ|B5caIu33K%%cG{YX zrLE^d()$EvC&}-)-izeA-44UJBwLd);A+AzNxxpuK|18SuI zGzDxluwH7;zsOmH@}`cqp5WZLGZ-I>n9Y^THq7?ZIEL>1Hd3W1-peO+I?z}Ly}0jW z9>Q{Dipws-Noli%n=_zTPwiWs6C4_?^$uTaJN44+Mj7PaCT~lTWLxJP$U$Br&4&tC zyV6L~-MLJy$g2gJ>QS zW@R|aFk6-#CM)*&2BLXavG?<#zY*k4Ly3AFJa(w{PoY{YANIAkKC-f9RBb@%O#e4z zy0kHkWc3JL;+ZEb{|3>o*8-s^YSu-3(RK1Q+6l;LA2<&=kSZHR;eD4vQsO1pjoUdG zl9%`G#CByk&vCN5b3_3meJ62smY{@vJnuR%i#gYdN>BX)8L?e@#vVUVtm~Wfqm)Fi z{Q?i=35~;({s2p$3&YFrvYvRNd{1{`A{hLQ^q(&P>~c&^IaH<$_eZ*bY1%kEbQq^y+~57hoR2IHWvzOc<_Kz05#5uWE1_D~8Pe#xgdOi{p8aXxeC@s(w_ zB=H*5`l|Ee!Y{c!guFQ2&;55O4R&O zyXsR#73z96_SjcE*PV&qi=H?Q-J9t$Q7Pp5S|Q=^OG%?hLhwaDH64F=|M^mCKb94_ z7aI*Kx;tDz?2$>0@JypZ)by!eJ?w5IGaRlOBfC%mw|&U{NK6f0BnaPB!p1<|DHga` zyWwzy`>n%-tG?5u?(7Hf*nJek%jng@hn{a@iJC#(LhjKX^y&OH4VsQw%RuQG}N7mElgC@G=o9 z4Vy!485fk{hn2h5U|+fX0vDVbTiR#uaNMvsV`&?T`{d?8?2FE8#<^Uq#VpY&0bStg z@T|P5!?*X=l9~x$rG2C<#hZ7fmv)=ck=lQO>cUG&M3EBRXJ_xwM)Xx<_0q^)=ae<-f_#D(OL18<`)MdORFykt805z<|w=kewv7xm8cwoG_*!e99TDf(I! zn&Q#&-R2#9Mi6u86ukR9-)kRSyC1h}20nS6j4$LC^KDnet=*y5-Hr(Xmpu*;!RJq|`@Mav!c#$M5x{VM6rn#m2cc$Uh zn(M?c52VHp0}2w~4L0-7ryvq+hGL<-ad#jeM`U#M)$f%8qXh<9`lCY|Jv^|5qDpAH;NjM?Xhu4UfNlSgsKcbH-9&#jx(;D z+6MQlW?AO#E<}ZwFgag#Lz;c*D>1rSdH~Z=(XE0`gUm@?6X` ze)qNsPcB7LX+-CbD52pbpQrP`HFJp;h~7t7*VxC zqL1HFg99n+jiX!zxN2VXDoP+Xr!`2C|4(Bh!C-j-gADK!>R!6Hpu42e=RKsfm#QV( z!=%#_4bq*2^bsYy6&;onCT`TS6mf99?bEOe{rHF4NnIBZS+t|ufk>zL(Z`AWt+cI0 z!iZiexAqUsWO_9wp}_P_T@`N_lH4U93(LWL{`V@V%BkAzA%4*B8l!$W)kP-2lE=OcybI?1QufStM1ICIrsm$7kjdRYV;e|WJO z0MjOzZ=vJ2KN2<@z#cPW7?jxs1L;c+ZdwCE#^anJRjd~ZnrJ#LClfz&tF8??9iIi) z-LGcR6)GL{nht%ZD8!?47~h(#yjLhP>kqG$HxpInF{MfeA{rlgfM{k9pJSQLB_T4Y z*nZUOC6-;}m{}+VhXl*VA&pkJBa?3`io-O{7J2bo0mfvrZ?O-Nw0E1l;&cM4^D+Gl zu&aS1p;q`N0TNo~qnm&`l^EZxKXrnLb-o`V56((&V_e6=6w1NwJC>7XBOaQ6As(l_ zKLy~FCzzM=k+-UIoJWz4vtHk3ipJaTEk6Km#rpI-?EC-~&Mmi&{KJR-+rJrtzxAXS z@`b$a6J*(!`eYl*0>jEUgQqOKuT6C|=uyt-H!c%!p}XWW__(`#LW0k8Hiq3$#Spx5 z`&NI*(9vu=1W~BSQ1;0OHmY51HX$HGQZw)dKFLp_HoD@U^pd@$@ej7{;bZn+advX> z4|&zl!!-?EBIoKcwPxqR7eK>L%$C-{SrK`dFu}+4L69$qH2kDIe75=;kT=7`o$zk- zCMNED!4`M&u6P`&>#GId_Iht^;AmZmwmRcxujnqB{Pm0QYGVDPPCoD27g#E`#Y+b< zUF%c!na0U-o@90subLK0ETm6@#Fb0^O+en){R8ulaLKS6mJA;53XH72ozk7cMNl8q zrI5z3*^tL(6%<^a#S-Lm&kZSr_r^)ZOUS9A2^PHKF$<~;hB`U)iU{2d{(9Jd&I*pV z6Xtb0y#=SlT<{=R^(n(~(H|VBOmPaSqUBK9^wjmJ~kAnDo(sGNO4 znQHXyC$q*UzAU~7Dkk@YF6iIh7$9k^=!H>lfiOvW1vZxsE?L(I`UxA>KLEj{m)RuF z`F~UI<&x;X0bdd5Xy8h%un%@=|0_Ui%5y3&F*}T z5_)tn;O@x6K%K7(khQjh+WTI(K4$~U+|%RA{_oZK_AxQa%YcTX=83#_X*9c28Bd}eV&?gcyyKF?=HMS-9tLj0k7Ch1J@t+64`BbDh- z$4NH^pYDZUolN=}QBG{Hy#!1L7iVqUR^UY^*~5g8;whR+u95OC2GH1-Ah&%2XdwAR z|3`Q*zTY^LN7lMD%#)kG{T^rNy-@sAQ6ct_`T7K;jd@d`i#_{@QUoe8TCj+lO+Iii zz~1l+`=-J%Ui0X4t8UK|bIgx$^5cBeR7fCl9!_RBo(`b*G33+WUa*7#Ozd8iASFJ5 zh={S@(r3v1!V*L1Y|0Vz#$1PkG`IJng%&IQ{fs?!;Kl7&(v@)Pis|ND)Zcijq(zKt znZ@2@(93XgbxdnEJH%G128BB-zuJS2*GGN<%|v-gjVGvSe&r^PS~Ov2<4PF*Rm)3U zXI#(kc3Mws)2+ILu0^X^d{}`Zy(^YQK~chE zTh&*yEM|mk?-zjB4%$dYuy~VabnSfpL0tRHD|${R5R$!F+MkRbdS;u4xn|5xZ&+T| z2PVgks%;H($}e2|3|&@D#R5RWWzmZo9>nK;b0O1QS<9aEwzB?V&hj7qC$&OYnBqH6 zZAtUL1aLwnPrpcZVwshslnFI;1biiY93=)VHr&zroXP4!usxO= zWXXBqI-Ip^iN(TtTLL}sG0rN}`0o3G&dsoBdI82LQHPS1A|dOH*_16vmMnSgJv=g7 zeh~~`$TO1{7PKe`K}>yg#!cqRxE9nBaWY~Czn9<+q2CWyvud3~4h!^7t>E;<9=YPP zFsUp^>0OPpV{m8nNuQph$SykUIPY~2P>hWXCZMFags_{+7GW9>N0cSD!;qN%uiv7 z4n6&42dH5#et+8C>1AVTCG*AwK|1p|4h5-7~Dp#FXCpK2KIqjRALhA;;3OBXv+%zD*iI zMl|p`rou>ZgXSlv30?)61ZT}2kln5BVDYk|1~I$vHeBji#QnHWf9i=Bp{GOTrF_7Z zza{?%9fb5J6h_WS^2qaNNV?jd8}%ZbRHKtCBh{#uK0 z9Ac#DJqr>|c;3}2636a3*m-#qrlJmc7c(U70^o}Lf+)g^IhsTlZ8dI6BmDLr9b?lJ z=gKj`Fbxw7i>!f|^qT$@2bl!l8q2#tPe0bA_~JZ4tWfHeiiXo3O~lX87mhD&c?88O zW~5+$95((fY#Lvr%R*|XgORIvsSGQj%t%f-MaS#oPxd$88w>q#2wBbDr4b7 zUb_|!@U6teMM;yd*)&|o@!9pk%V(T|DW~Xe?)5g!@t((R}<3ok7vpJNTtp7+U^{Q`f#Ta`2iTrAuxA3-`Re-wS7 zv2D$roOk8^M)%ofKI*vhH-OEss?6vmQXJcdT#h+3M>~EmNjl9NUargQZrp(+<&`fj z5@e*Pi-a|+OTJ==fcguZ`a;S)!P%1|^&PsGa=DqW(K(DFF@@D3pni87G7>VRaVRvR zr)_E}Qayv~a7cIVd7_j`yE60^d#aaFi^6*1gOPKF)mN@!v|b;Q7;|VFu1`4+2i#rQ z2aZhzv}4cOQRkVLt(h?M6pN`;62=fP4!|j#`#8@zJ^I@m#i)NLX@??dwb%!guv@1| z>Mh3TKSIyg`#mqGg9h1>6-CV0KbWfuc9~XD9OP>qqL7<7%dq9~G?!E#Tk(u$1$ZW% zLERK`3&rQC@=Hn17?9?IfsOT1g6VZ86`>W_y~_&*hU?$k2<(UiF?aHM+ySjJ!=`{j zZCg&6=a%t*@dYqW{hd2IS+~D6G?KIARc|i%(YtH0m?1#YzM6gx`Cg&&_u+PMRba?Z z7~Cvzw-AFvx?c1C9dG#$EAn596eg=(3Y2!>zW(xL=>S2}AP+Kc&BspPNc|Qg(OgP- zHy;)_;QOSGHZiy{sPIHkc#Mzck0CN>dav9S=`HAUomWg5o~d6nPfQgr%*Dx-@_t;8 zlAyOTAEaD>uG1SZKvYbxJ?A7t^dAJ-|7PN`u#{b%&53I_3q?%~28cfLRW}HO-I)hy zZ^p1epL{jSXBFosj;fH4D8E`Enzt>JHn8FQ`wA(-w<&dZ$reZ&@gE?mL>{2-YB{^$PujAGHjxJe+O~BPA%j0WqxjD>BIz2o8W<1ki7Lr8 zROv7{Pp$vijwT%nsaRJIgD$;aaV}?!bJv^dUHOPl@Z5M>CgO99|KQ@U{%cULa#d9Z z1D2$kvB^eTHrZ$pHV)OQB$p8FT7D1fTU&b!h-nxgX&* zkE8usZy-MIXw%-AqR*iE8d&M=qoIm)M-PbFm8St^Hs#8KR`-S~t!a|mu#bKvt}VfYm*XGwgjUY^%_)MN8F|fhYqZBngulOQcS|63PvPt!gc<5F|5L# zEpbliNU_o<54W_r zFBKSxrY&Z$99?oEhY*1w9pxyANzr1D;x#xTOwN3ooXi_LmC0{Y9OU|J6M9rKk)IGw zy~{UwgKQ_ZNKjqdcwF29C*Cjm4IXUpCOV&6xf%%N);!M72C0)hb7%A9Sm~HQJsF|9 zXLxNQCa3kJ_Xh+8F0R$D!FT9RDO&{XKm1{j#G5%b^8^icw~VqEFCyH7uFtb$D5kbH z=U9JhmYYh>Jmk05Ylmdbqc3N2KIvIv(}KSW5?2SY_prFuQb6Fj!5Qd8!{8;@{i?b( z>N(P8j2!t|(66^E+mj7EN$eG5C4Tj}$NGP*Ck8`jn{kuRA9Y9WgopmoNvd$K?9J>) zq&6d47V)nvFFpev-DXK<^2X;b<0&V;H_0l#_fiH;ogz(rsPTu59M8zB!@j0pz`}ANf8E4XL==Bz zQQaGf1Jp6Bpx3TIk?C+elpNsK`=@dq|jTVL5k z`=+j?;eRXF5C>K zUY{R}+i}XCLQu%$^Ip>FB8=#ZYwLnz(xkI0=gFd@&e+?>qpLlfk8&+ekjjJnB!jh@ z4?PX_auBUI5kO2<@2q|r(}JW={aH@!P7riKUU_1gWE5wWu8Sz?7CT#FaRr5neHNWv z4HzEnW;benta}m8T1~LqEaS`3J0lrrG;ZR9fyaDo@VNIp*NF=2ZEt*fb!Am3lIVU= zzV!lor}0x0a~uw;p`KMSXy%ygTi0CZ;XK;!zX%Cmvby_l5gx9td{!eqZmqrjCftqt zj5+jkBVW^4@JBqoCDO+GKh8)0r+xAMGnn3tu9fA-TbqD+Z&oM*6`T{VH>lCcS2F|Ke6NzCJn|%k8`Q9c81vcOz2g$07ax z*px!9Hq(&&S5GNCz0_W&?C2Uk-P(O?nvi8LICItxwawO+WHz!)L=x7p!PohVh4gUA z;YzQEdTxvO;aTak870tK-mlnkL-R@QLwVRtb8^@;t^}u3z%6~AoM=#4qBhh6CyT|| zi37`)e9crlZ_wpe(NQSs{h>X24p`T995}0#pqw)@g2JLNayn*`PC;sHwZ6*G@bIel zS{g|u`qTV4$#({A$xiOaFk|WBKkJ0Q)=B!OI(71NRN=_B{@7I5`p1|%(<-U07PyIg|-K`G{*L}9L_c{ZSI+AXhgalnKTT+lgqEBca`x%gnXXf7HWU_<`!^{v<{4wIm_c$%MZga`kbqre<1MV0VrMayo8*^2%m$4AGg>L2_!9AZ{Yc)*i!0fMeHyM%P&Dey)BsZ}`70?Un`b-UUtJJH{&MaJo{2`Hr^U#q$qEiO> z=*hlw(Fm7X$hV8at@|UkV2{KH~pB_U=_XfKIVkd!VNmsR~HR_tmXM7Z?y{;Fa@)?RWvTzb@0Nr|} zR5L8jR+aw)c2xA!*fD?jcDK1zgIXc)7jRii9aZjr+ArGi5yT9i_RRnZcm3XuL#4-r z4jr=r<9=gW#X<^yh~#g=)e6+iIa9by9t{b)w{b?wXR|bYZtr6a)^q_edZH}eUU^}!X9Xl zmQ~`u3S81=FJ@smN)4>eaq?9i`w%Q)qh+Bwk5794@gs3X*T!cL$X~&hm@bLA?m~K3 zJ*V0TRT2ef(-y&B_%lgrFBzC(`18oQ1BMBI%o3lS1X27U#y>j+UD@b})kLrS^rG-% zr`U3%BU2Q?*$y_e$ssRu#B~85cX7tLLIYsBrw1w*V=q?N6<(Z>obDgzAhopBUxxJA zXFa?iD6x-v5Pll_5Ir^0lHI5cm|K5Lv_Z_1J5wp+T%(0k;>e-riJO0}bpXaIeXS7x zSB21@70Q`5Xony#sj_`iRp+_11*O|T+gANTio74Fi;%lA!B87|)M})R5-W@E$61G; zwa^L$|46?>*^dmheBu3H*%cDMQ@<4Fb{JVVtjquP;_MsWrp+~uGDv?mebC0h}9bj|r6j9Sj=paWEDn9(_saCj6 zmroyy9yCuFS$py!b~TD)HAXn`BP+IP#`HlO!gK4VCqG=T3V+%^<;B-H?sB303kdW_ zE^qk6CBi-m{z0hUUV3nO+yFGl{ zWFIre7$4hPh?4E^7;_LGW0!~xC!9;J*7iC(sJ;|m{REfOs^62A`Vpb^&*i|&<|NWtReCFJ9b3l=K7}r zDEQ?ovU7*0(vV{9=A{Ad%!n$Cmz;f`T!Nn(L*ze1`vuoNLUkWyHjLfF*XYX7Ev|x~ zmq)zB&Q5cM)`~?YtKsw=J9fM4;IUMC!vJ4=Q2j8jc1Cult&yeKv5g&Gly}k=L^mac z0rJhMlWJYcP{H$UFY&`7`&Zib$}l0>XD2>YCz0y|L0Zs<&Xaj DGStm7 literal 0 HcmV?d00001 diff --git a/images/hr.png b/images/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..6c723a5602e14caa5c1527f3226d383dc83db6bd GIT binary patch literal 1037 zcmaJ=O=#3W6ppP(DfA#BSfMzksBP)ycawF8u4S8S+eOos-GGZH(`4F>Z89;Lx@kQW zdXeJMs}{wJ7kd-LA_{_7ym;tIym;!NSV8EeAUN6XZauh$A$c>r?|a{Td2fAYYNDt6 zd^f`|J;h1A#4sICXndmU6n#J5Kg-ikFDX<=8PAcL6(T0@;8_HUo;8n3$a0qNZle)~ z>6~`W3aJ=3pp8AwN^-c^3n-dlMn>bnvKJ5mvuNJ+bL`KpcPwz79D7qS1S8N;)ty`k zQF&#`v{x4Ftiz6810yk{1Rf$5h`mKWf^m+m^FkUY$2<$_DP$qX9*L?LGeE;30tzRm zY(W%(s&ZmlQB`pmNP;Nw0$plKOhZM5QU)|0mR1X$Iat!i8@1>z$5sgmAkWuoHLfOe zIGpFjY&M&4NK%Ssq@rb?SaHga`kM?oitNx0h>LxYFj}*CiR4(S^yms+(4zIDhE3Ek zKDGj0o(%|yfaf2!xTvLjML$9n%s9GS}j;!7yPOQB7F++2TBDu7yuEP_K584fa+@981e_uIs?OtVl{m%4Q@jEs6zkOwY@OLYf|Fijp4Jnphp%OCIt`6YCsf^KG$7 z-*^G7tfSDqhn(>cd!X(QblYpmwB>7Ho%UL;w#D*P44-ttUtQ5WqOF#MtsbYF)|4Qh zjz&mlVDsTNN9V^Z>UlH%x?^tlFhbYb?*||IhKCM5Kf8Fk0~~&sex2TTgpC(J4*mO= zclX|($v%4f<@?sbt)0D3^7`}qYTq~YRe7TK%AHKGyE^n#+j#TxU#ywo|pap6}o NpvA(JzBzV#?GKcZMQ8v3 literal 0 HcmV?d00001 diff --git a/images/octocat-icon.png b/images/octocat-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ba137d268da4921d9f4b5905bed9e724c45770 GIT binary patch literal 1651 zcmaJ?c~BE)6i=&CmBQF^2nEWrRFJ9JBd4qc2uXlggBYS<_A=YECPTRrOiHs*&yP<&nqjcx(e#gAu@4fH$y*Ili zJuSs&@*9(RJf4p_RjK91Q0|>N(Tn>AeFtZ9Loln#Vl${5)?uJ=p4?0saX?KPa&awg zFc&R7kH_(N82pGZkA*v1TwK9*A>d907^52Ea*LZ4Bm=fkV6)H}`DAATZ>@ zT4dlqNo8r$0R=_lfEW_;O$dqt5($Kg#1aWQ0}vpn07f{I@KF&amS6%YF#LdAG}@el zX_d*tvAC5C%wt(Q2Ez`A19Au-$uuPm_u+w0NQ3&xIX~a>Z`F~fE9Q9^cE&d|k|0HH~ zMRpw4;tW+lo4AY1iS&fBV+tBKuoSJMDC>xd>3I}OF?p07P-IAe>8KDwhQvdJh!`Rv z5h@cOuk{PdF)(7V`5=08Q4<=|Eh|SEw0o&)6p8|7NcE)+ql-CxgNL~{kDY1d-=Fp zDc3oB>leI}=Qq#)lu$kXoA4^5=2=gorNKL4ci_7i)L=wGH~hHrS@&5 z{m1Ldg2S$K1Q|oxdI)uHWzM=2_kzInDcSO*kK$e9jmdrEbMl(z+L_tqo9lS*i_}kn z!;@N9MLo*)+f`bgcsnp+M^wTG5zUK1AH_N*J}0%g(JT*JQJZq;vtw-5lnG(htG=?7 zhw_1~o2Cd(i33AlIeVj|?9Tm&qvCsWI(@<#n!t znLtPUqTdi=-2-c@dL9+&V~78>innq7HK6}sa7(tNdd$dB8mb{68L6}pf%=0Vxv&2fE^zrxR3+&9%-B{LE0TiQCp z<=dTMw$y5YZ+$HN`TGk0xE5TYvP9mA+2j|y-h2PR;=dl;SSI@T{Q8|8*>_#1+|LL5 zOuXH$Xl-y@eLxYMFTl|~XYv;+EPVSlv2%vjxS`B?2<(y>vmtTYu%Ls;uc3`9|0CjvStG;=(H77 zW(Tb($g_&JEJzVCeZ+;b+j zU`>$Ac#rV_0Jx}>@(^yG$-VAlow)ClfvhlYn$9Y;Y$zSYCh8ahkQiw_0jfw{G!a7R zj7e+ji2wj_Txtr_vRd^L+(45&o!y6LCCwZf00P8Tv(6Alu%MoZHc=wz@u?aJG#N$E za!ie=%`zg!q)cXr&}2=RAvwgM0+#!w5HoKBzB_330w3IQ&3dG{zW( zhsXnmV{tnX6vMJ+9EKAU6M2aO9?e9Hy5(Zm!W*Frm_9Klrs@4DRN|K}A7B+-<0f!J4I-W6b7Z>Ga4`s$>454FbCXA-njASu5hGuC?3~dHwp+ayDD&QeQ$wLGP z#v^&YC^no+0gPZcAH@-b8*@Q$j#_6hQFiRyA#$}ES5X#LM;Qo}Tm*69cqWq(mk2OE z=Eq0<_%dG<=ef- zy>etS%+FFYlh1BD?`3nQm`QifWTNOn=l0L4tYb2F#B7;09xJI>QF-d_m4{SGFX>Ls z&b!i@bgZVWAn)1jQtio@Z@l|eaB5)qj!go5&|2B;*~{egdQZ^65r53yytQ`2d(+Yj z^8+f&*4;aQb*|)%50~MaQt10j)+gv4gmhVK zM-Z~oqs$hydNt9QUcY#ereeYiE426i(R}Z?$%4aR{^Ca2wLQfh1+~RbPxrXoh+JNO z%T1gyqvd8tcbbQI%DTax-`!lNvF`WQUEQ^Edw+k2&G?aJU#<#@Y6D!O9Ty$?u}c!9 z&Uq0Jov@v3ey;qjd$(oab133;*LVJ}g6{8qHmk~YdySp|nYjosa z_;nT%D)xTqESXc_U9_d6^#Pm-Hy@v<^!j$i(^%ZM0B}urXrr;t+0CZ%s)ggad(Q5Q z`$2o4HB~b6cFjMXmjs@&-k|oH3pe|wR< iV#{**js5QrOpOF+r-X*;DTNR0zXp{;BQKRkru++OlZcG~ literal 0 HcmV?d00001 diff --git a/images/zip-icon.png b/images/zip-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..162c425b432d8a80f54372594bbbb5ffba52b7b6 GIT binary patch literal 1661 zcmeAS@N?(olHy`uVBq!ia0vp^@<1%k!3HEh|D6&7q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfjXPhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9BihbVQ8#p01i9@ zV*^vYTs;#*Q)pNk>l>I_85vp`7yyx`f`W!`Vsd64NUtW?a9>|5&%EN2#JuEGPZwJy zpmlngnJHFg1{S6U&KAz*MovzKhOUNAE{?{ot|q4DM$V?DCT`9!y)OC5rManjB{01y z2)!;i^@7q(ZUN9{m(-%nveXo}qWoM1aQIkd;&zK8PV=C8Q*gV*38!9tpkwqwsQ@We zz=VKF4a9_}aUchtOH%WIS)&M;2m1PFTw-8gI^yZ#7*cU-O_*=Cu%kp>`mWBO2TZnh zY?-C;S7B-3%5RU3MqNo*-};OF&B05%<_P7MR`YA>@&o!Y0D&Nm8N}r)VT0u@VfJh^kHXLEM zsFu*MQ<`$h7SLT>_bep_oDE9r<|0Uf|{^wfhgjs3|Nt3tbTBm7EIh~r& z!}$D;X6F`}C0oC~dg*atOLkGo%#s^+8Pt~Gt-}-94;$(`YtorHn zTg!_rm#<&6W7D+AGn(QXH?7{k^`6w`bKk1XV)|8$^Vz5V+;HQ{^bhKH(gRO8^&3s| z;e0pandSEHDesQ1F^Cgdln5jlw%i2EZ$};U|K7S;CYVe~%M_-;Gj&&Yy%lHcyiR9F6db$0WOrMH`1g3&9(&{({|yn>rg?wMnwQjb1x9YttBn36WbE>+E&hT$BO62Ch56cR S7rUr~Dg;kgKbLh*2~7YV%7O|2 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index bbe9333..9e22b38 100644 --- a/index.html +++ b/index.html @@ -1,321 +1,76 @@ - - - Example - jQuery SilverTrack + + + + + + + + + Jquery.silver track by tulios + - - + +
+
- - - +
+

Jquery.silver track

+

A smart and very extensible jquery sliding carousel

+
- - - - - - - - - +
+ Download .zip + Download .tar.gz + View on GitHub +
- - - - +
- - - +
+

+Welcome to GitHub Pages.

- View on GitHub +

This automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:

-
-

jQuery SilverTrack

+
$ cd your_repo_root/repo_name
+$ git fetch origin
+$ git checkout gh-pages
+
-

- This is an example page, for full documentation and details, see - The Github README file -

-
+

If you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.

-
-
-

Basic

+

+Designer Templates

-
-
-
- -

Trailer 1

-
-
- -

Trailer 2

-
-
- -

Trailer 3

-
-
- -

Trailer 4

-
-
- -

Trailer 5

-
-
- -

Trailer 6

-
-
- -

Trailer 7

-
-
- -

Trailer 8

-
-
- -

Trailer 9

-
-
-
- -
-
- Restart -
-
- - -
- -
-
-

Cover 1

+

We've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.

-
-
-
- -
-
- -
-
- -
-
-
-
- Carly Rose Takes on Bieber -
-
- The X Factor unplugged the Top 6 finalists and then had them take requests from the audience. At the top: Carly Rose Sonenclair with Justin Bieber's "As Long As You Love Me." -
-
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- -
-
- Restart -
-
+

+Rather Drive Stick?

- -
+

If you prefer to not use the automatic generator, push a branch named gh-pages to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.

-
-
-

Cover 2

-
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
+

+Authors and Contributors

-
-
- Restart -
-
+

You can @mention a GitHub username to generate a link to their profile. The resulting <a> element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.

- -
+

+Support or Contact

-
-
-

Remote

+

Having trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.

+
-
-
-
+ -
-
- Restart +
- - -
- - - + + \ No newline at end of file diff --git a/javascripts/main.js b/javascripts/main.js new file mode 100644 index 0000000..d8135d3 --- /dev/null +++ b/javascripts/main.js @@ -0,0 +1 @@ +console.log('This would be the main JS file.'); diff --git a/params.json b/params.json new file mode 100644 index 0000000..9a11d20 --- /dev/null +++ b/params.json @@ -0,0 +1 @@ +{"name":"Jquery.silver track","tagline":"A smart and very extensible jquery sliding carousel","body":"### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:\r\n\r\n```\r\n$ cd your_repo_root/repo_name\r\n$ git fetch origin\r\n$ git checkout gh-pages\r\n```\r\n\r\nIf you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.\r\n\r\n### Designer Templates\r\nWe've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.\r\n\r\n### Rather Drive Stick?\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `` element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/stylesheets/print.css b/stylesheets/print.css new file mode 100644 index 0000000..541695b --- /dev/null +++ b/stylesheets/print.css @@ -0,0 +1,226 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +body { + font-size: 13px; + line-height: 1.5; + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + color: #000; +} + +a { + color: #d5000d; + font-weight: bold; +} + +header { + padding-top: 35px; + padding-bottom: 10px; +} + +header h1 { + font-weight: bold; + letter-spacing: -1px; + font-size: 48px; + color: #303030; + line-height: 1.2; +} + +header h2 { + letter-spacing: -1px; + font-size: 24px; + color: #aaa; + font-weight: normal; + line-height: 1.3; +} +#downloads { + display: none; +} +#main_content { + padding-top: 20px; +} + +code, pre { + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal; + color: #222; + margin-bottom: 30px; + font-size: 12px; +} + +code { + padding: 0 3px; +} + +pre { + border: solid 1px #ddd; + padding: 20px; + overflow: auto; +} +pre code { + padding: 0; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + border: 1px solid #ebebeb; + text-align: center; + font-weight: 300; +} + +form { + background: #f2f2f2; + padding: 20px; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 2.8em; +} + +h2 { + font-size: 22px; + font-weight: bold; + color: #303030; + margin-bottom: 8px; +} + +h3 { + color: #d5000d; + font-size: 18px; + font-weight: bold; + margin-bottom: 8px; +} + +h4 { + font-size: 16px; + color: #303030; + font-weight: bold; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + font-weight: 300; + margin-bottom: 20px; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + font-size: 1.6em; + border-left: 10px solid #e9e9e9; + margin-bottom: 20px; + padding: 0 0 0 30px; +} + +ul li { + list-style: disc inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 3px; +} + +dl dd { + font-style: italic; + font-weight: 100; +} + +footer { + margin-top: 40px; + padding-top: 20px; + padding-bottom: 30px; + font-size: 13px; + color: #aaa; +} + +footer a { + color: #666; +} + +/* MISC */ +.clearfix:after { + clear: both; + content: '.'; + display: block; + visibility: hidden; + height: 0; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} \ No newline at end of file diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css new file mode 100644 index 0000000..c6a6452 --- /dev/null +++ b/stylesheets/pygment_trac.css @@ -0,0 +1,69 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css new file mode 100644 index 0000000..020ad6d --- /dev/null +++ b/stylesheets/stylesheet.css @@ -0,0 +1,371 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* LAYOUT STYLES */ +body { + font-size: 1em; + line-height: 1.5; + background: #e7e7e7 url(../images/body-bg.png) 0 0 repeat; + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); + color: #6d6d6d; +} + +a { + color: #d5000d; +} +a:hover { + color: #c5000c; +} + +header { + padding-top: 35px; + padding-bottom: 25px; +} + +header h1 { + font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif; font-weight: 900; + letter-spacing: -1px; + font-size: 48px; + color: #303030; + line-height: 1.2; +} + +header h2 { + letter-spacing: -1px; + font-size: 24px; + color: #aaa; + font-weight: normal; + line-height: 1.3; +} + +#container { + background: transparent url(../images/highlight-bg.jpg) 50% 0 no-repeat; + min-height: 595px; +} + +.inner { + width: 620px; + margin: 0 auto; +} + +#container .inner img { + max-width: 100%; +} + +#downloads { + margin-bottom: 40px; +} + +a.button { + -moz-border-radius: 30px; + -webkit-border-radius: 30px; + border-radius: 30px; + border-top: solid 1px #cbcbcb; + border-left: solid 1px #b7b7b7; + border-right: solid 1px #b7b7b7; + border-bottom: solid 1px #b3b3b3; + color: #303030; + line-height: 25px; + font-weight: bold; + font-size: 15px; + padding: 12px 8px 12px 8px; + display: block; + float: left; + width: 179px; + margin-right: 14px; + background: #fdfdfd; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f2f2f2 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f2f2f2)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f2f2f2',GradientType=0 ); /* IE6-9 */ + -webkit-box-shadow: 10px 10px 5px #888; + -moz-box-shadow: 10px 10px 5px #888; + box-shadow: 0px 1px 5px #e8e8e8; +} +a.button:hover { + border-top: solid 1px #b7b7b7; + border-left: solid 1px #b3b3b3; + border-right: solid 1px #b3b3b3; + border-bottom: solid 1px #b3b3b3; + background: #fafafa; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f6f6f6 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f6f6f6)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f6f6f6, 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */ +} + +a.button span { + padding-left: 50px; + display: block; + height: 23px; +} + +#download-zip span { + background: transparent url(../images/zip-icon.png) 12px 50% no-repeat; +} +#download-tar-gz span { + background: transparent url(../images/tar-gz-icon.png) 12px 50% no-repeat; +} +#view-on-github span { + background: transparent url(../images/octocat-icon.png) 12px 50% no-repeat; +} +#view-on-github { + margin-right: 0; +} + +code, pre { + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal; + color: #222; + margin-bottom: 30px; + font-size: 14px; +} + +code { + background-color: #f2f2f2; + border: solid 1px #ddd; + padding: 0 3px; +} + +pre { + padding: 20px; + background: #303030; + color: #f2f2f2; + text-shadow: none; + overflow: auto; +} +pre code { + color: #f2f2f2; + background-color: #303030; + border: none; + padding: 0; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +hr { + height: 1px; + line-height: 1px; + margin-top: 1em; + padding-bottom: 1em; + border: none; + background: transparent url('../images/hr.png') 50% 0 no-repeat; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + border: 1px solid #ebebeb; + text-align: center; + font-weight: 300; +} + +form { + background: #f2f2f2; + padding: 20px; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 32px; +} + +h2 { + font-size: 22px; + font-weight: bold; + color: #303030; + margin-bottom: 8px; +} + +h3 { + color: #d5000d; + font-size: 18px; + font-weight: bold; + margin-bottom: 8px; +} + +h4 { + font-size: 16px; + color: #303030; + font-weight: bold; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + font-weight: 300; + margin-bottom: 20px; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + font-size: 1.6em; + border-left: 10px solid #e9e9e9; + margin-bottom: 20px; + padding: 0 0 0 30px; +} + +ul li { + list-style: disc inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 3px; +} + +dl dt { + color: #303030; +} + +footer { + background: transparent url('../images/hr.png') 0 0 no-repeat; + margin-top: 40px; + padding-top: 20px; + padding-bottom: 30px; + font-size: 13px; + color: #aaa; +} + +footer a { + color: #666; +} +footer a:hover { + color: #444; +} + +/* MISC */ +.clearfix:after { + clear: both; + content: '.'; + display: block; + visibility: hidden; + height: 0; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} + +/* #Media Queries +================================================== */ + +/* Smaller than standard 960 (devices and browsers) */ +@media only screen and (max-width: 959px) {} + +/* Tablet Portrait size to standard 960 (devices and browsers) */ +@media only screen and (min-width: 768px) and (max-width: 959px) {} + +/* All Mobile Sizes (devices and browser) */ +@media only screen and (max-width: 767px) { + header { + padding-top: 10px; + padding-bottom: 10px; + } + #downloads { + margin-bottom: 25px; + } + #download-zip, #download-tar-gz { + display: none; + } + .inner { + width: 94%; + margin: 0 auto; + } +} + +/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ +@media only screen and (min-width: 480px) and (max-width: 767px) {} + +/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ +@media only screen and (max-width: 479px) {} From e305b1f5fb76d2011bacee9fa139b92c49d7e421 Mon Sep 17 00:00:00 2001 From: tulios Date: Tue, 11 Mar 2014 15:37:53 -0300 Subject: [PATCH 20/34] better docs page --- README.md | 17 + _config.yml | 4 + _includes/footer.html | 10 + _includes/head.html | 44 ++ _layouts/main.html | 8 + _site/README.md | 17 + {img => _site/images}/arrows.png | Bin _site/images/body-bg.png | Bin 0 -> 8859 bytes {img => _site/images}/gh-icons.png | Bin _site/images/highlight-bg.jpg | Bin 0 -> 34222 bytes _site/images/hr.png | Bin 0 -> 1037 bytes _site/images/octocat-icon.png | Bin 0 -> 1651 bytes _site/images/tar-gz-icon.png | Bin 0 -> 1671 bytes _site/images/zip-icon.png | Bin 0 -> 1661 bytes _site/index.html | 158 +++++++ _site/javascripts/basic_example.js | 12 + .../javascripts/libs}/jquery-easing-1.3.0.js | 67 ++- .../libs}/modernizr_mediaqueries.js | 1 - .../javascripts/libs/responsive-hub.js | 23 +- _site/javascripts/main.js | 1 + .../plugin}/jquery.silver_track.js | 48 ++- .../plugin/jquery.silver_track_recipes.js | 66 +++ .../jquery.silver_track.bullet_navigator.js | 5 +- .../plugins}/jquery.silver_track.navigator.js | 5 +- .../jquery.silver_track.remote_content.js | 4 +- ...y.silver_track.responsive_hub_connector.js | 5 +- _site/params.json | 1 + _site/stylesheets/base_example.css | 73 ++++ _site/stylesheets/print.css | 226 ++++++++++ _site/stylesheets/pygment_monokai.css | 64 +++ _site/stylesheets/stylesheet.css | 371 ++++++++++++++++ css/gh-buttons.css | 401 ------------------ css/responsive.css | 348 --------------- css/style.css | 324 -------------- images/arrows.png | Bin 0 -> 6538 bytes images/gh-icons.png | Bin 0 -> 3948 bytes img/blacktocat.png | Bin 1428 -> 0 bytes index.html | 165 ++++--- javascripts/basic_example.js | 12 + javascripts/libs/jquery-easing-1.3.0.js | 205 +++++++++ javascripts/libs/modernizr_mediaqueries.js | 4 + javascripts/libs/responsive-hub.js | 208 +++++++++ javascripts/plugin/jquery.silver_track.js | 366 ++++++++++++++++ .../plugin/jquery.silver_track_recipes.js | 66 +++ .../jquery.silver_track.bullet_navigator.js | 90 ++++ .../plugins/jquery.silver_track.navigator.js | 69 +++ .../jquery.silver_track.remote_content.js | 229 ++++++++++ ...y.silver_track.responsive_hub_connector.js | 40 ++ js/example1.js | 45 -- js/example2_and_3.js | 53 --- js/example4.js | 80 ---- js/script.js | 40 -- stylesheets/base_example.css | 73 ++++ stylesheets/pygment_monokai.css | 64 +++ stylesheets/pygment_trac.css | 69 --- stylesheets/stylesheet.css | 38 +- 56 files changed, 2697 insertions(+), 1522 deletions(-) create mode 100644 README.md create mode 100644 _config.yml create mode 100644 _includes/footer.html create mode 100644 _includes/head.html create mode 100644 _layouts/main.html create mode 100644 _site/README.md rename {img => _site/images}/arrows.png (100%) create mode 100644 _site/images/body-bg.png rename {img => _site/images}/gh-icons.png (100%) create mode 100644 _site/images/highlight-bg.jpg create mode 100644 _site/images/hr.png create mode 100644 _site/images/octocat-icon.png create mode 100644 _site/images/tar-gz-icon.png create mode 100644 _site/images/zip-icon.png create mode 100644 _site/index.html create mode 100644 _site/javascripts/basic_example.js rename {js => _site/javascripts/libs}/jquery-easing-1.3.0.js (91%) rename {js => _site/javascripts/libs}/modernizr_mediaqueries.js (99%) rename js/responsive_hub.js => _site/javascripts/libs/responsive-hub.js (92%) create mode 100644 _site/javascripts/main.js rename {js => _site/javascripts/plugin}/jquery.silver_track.js (91%) create mode 100644 _site/javascripts/plugin/jquery.silver_track_recipes.js rename {js => _site/javascripts/plugin/plugins}/jquery.silver_track.bullet_navigator.js (97%) rename {js => _site/javascripts/plugin/plugins}/jquery.silver_track.navigator.js (96%) rename {js => _site/javascripts/plugin/plugins}/jquery.silver_track.remote_content.js (99%) rename {js => _site/javascripts/plugin/plugins}/jquery.silver_track.responsive_hub_connector.js (95%) create mode 100644 _site/params.json create mode 100644 _site/stylesheets/base_example.css create mode 100644 _site/stylesheets/print.css create mode 100644 _site/stylesheets/pygment_monokai.css create mode 100644 _site/stylesheets/stylesheet.css delete mode 100644 css/gh-buttons.css delete mode 100644 css/responsive.css delete mode 100644 css/style.css create mode 100644 images/arrows.png create mode 100644 images/gh-icons.png delete mode 100644 img/blacktocat.png create mode 100644 javascripts/basic_example.js create mode 100644 javascripts/libs/jquery-easing-1.3.0.js create mode 100644 javascripts/libs/modernizr_mediaqueries.js create mode 100644 javascripts/libs/responsive-hub.js create mode 100644 javascripts/plugin/jquery.silver_track.js create mode 100644 javascripts/plugin/jquery.silver_track_recipes.js create mode 100644 javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js create mode 100644 javascripts/plugin/plugins/jquery.silver_track.navigator.js create mode 100644 javascripts/plugin/plugins/jquery.silver_track.remote_content.js create mode 100644 javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js delete mode 100644 js/example1.js delete mode 100644 js/example2_and_3.js delete mode 100644 js/example4.js delete mode 100644 js/script.js create mode 100644 stylesheets/base_example.css create mode 100644 stylesheets/pygment_monokai.css delete mode 100644 stylesheets/pygment_trac.css diff --git a/README.md b/README.md new file mode 100644 index 0000000..b895586 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# jQuery.silver_track + +## Setup + +```sh +gem install jekyll +``` + +## Generating pages + +```sh +jekyll serve --watch +``` + +URL + + http://localhost:4000/jquery.chaos/ diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..1b92255 --- /dev/null +++ b/_config.yml @@ -0,0 +1,4 @@ +safe: true +lsi: false +pygments: true +permalink: /:categories/:title.html diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..9a02e90 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,10 @@ + + +
+
+ + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..864340f --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + jQuery.silver_track by tulios + + + +
+
+ +
+

jQuery.silver_track

+

A smart and very extensible jquery sliding carousel

+
+ +
+ Download .zip + Download .tar.gz + View on GitHub +
+ +
diff --git a/_layouts/main.html b/_layouts/main.html new file mode 100644 index 0000000..9569bab --- /dev/null +++ b/_layouts/main.html @@ -0,0 +1,8 @@ +{% assign root_path = '../' %} +{% include head.html %} + +
+ {{ content }} +
+ +{% include footer.html %} diff --git a/_site/README.md b/_site/README.md new file mode 100644 index 0000000..b895586 --- /dev/null +++ b/_site/README.md @@ -0,0 +1,17 @@ +# jQuery.silver_track + +## Setup + +```sh +gem install jekyll +``` + +## Generating pages + +```sh +jekyll serve --watch +``` + +URL + + http://localhost:4000/jquery.chaos/ diff --git a/img/arrows.png b/_site/images/arrows.png similarity index 100% rename from img/arrows.png rename to _site/images/arrows.png diff --git a/_site/images/body-bg.png b/_site/images/body-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..d0618fe749178e814554f19fd158dea90020252d GIT binary patch literal 8859 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 DGStm7 literal 0 HcmV?d00001 diff --git a/_site/images/hr.png b/_site/images/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..6c723a5602e14caa5c1527f3226d383dc83db6bd GIT binary patch literal 1037 zcmaJ=O=#3W6ppP(DfA#BSfMzksBP)ycawF8u4S8S+eOos-GGZH(`4F>Z89;Lx@kQW zdXeJMs}{wJ7kd-LA_{_7ym;tIym;!NSV8EeAUN6XZauh$A$c>r?|a{Td2fAYYNDt6 zd^f`|J;h1A#4sICXndmU6n#J5Kg-ikFDX<=8PAcL6(T0@;8_HUo;8n3$a0qNZle)~ z>6~`W3aJ=3pp8AwN^-c^3n-dlMn>bnvKJ5mvuNJ+bL`KpcPwz79D7qS1S8N;)ty`k zQF&#`v{x4Ftiz6810yk{1Rf$5h`mKWf^m+m^FkUY$2<$_DP$qX9*L?LGeE;30tzRm zY(W%(s&ZmlQB`pmNP;Nw0$plKOhZM5QU)|0mR1X$Iat!i8@1>z$5sgmAkWuoHLfOe zIGpFjY&M&4NK%Ssq@rb?SaHga`kM?oitNx0h>LxYFj}*CiR4(S^yms+(4zIDhE3Ek zKDGj0o(%|yfaf2!xTvLjML$9n%s9GS}j;!7yPOQB7F++2TBDu7yuEP_K584fa+@981e_uIs?OtVl{m%4Q@jEs6zkOwY@OLYf|Fijp4Jnphp%OCIt`6YCsf^KG$7 z-*^G7tfSDqhn(>cd!X(QblYpmwB>7Ho%UL;w#D*P44-ttUtQ5WqOF#MtsbYF)|4Qh zjz&mlVDsTNN9V^Z>UlH%x?^tlFhbYb?*||IhKCM5Kf8Fk0~~&sex2TTgpC(J4*mO= zclX|($v%4f<@?sbt)0D3^7`}qYTq~YRe7TK%AHKGyE^n#+j#TxU#ywo|pap6}o NpvA(JzBzV#?GKcZMQ8v3 literal 0 HcmV?d00001 diff --git a/_site/images/octocat-icon.png b/_site/images/octocat-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ba137d268da4921d9f4b5905bed9e724c45770 GIT binary patch literal 1651 zcmaJ?c~BE)6i=&CmBQF^2nEWrRFJ9JBd4qc2uXlggBYS<_A=YECPTRrOiHs*&yP<&nqjcx(e#gAu@4fH$y*Ili zJuSs&@*9(RJf4p_RjK91Q0|>N(Tn>AeFtZ9Loln#Vl${5)?uJ=p4?0saX?KPa&awg zFc&R7kH_(N82pGZkA*v1TwK9*A>d907^52Ea*LZ4Bm=fkV6)H}`DAATZ>@ zT4dlqNo8r$0R=_lfEW_;O$dqt5($Kg#1aWQ0}vpn07f{I@KF&amS6%YF#LdAG}@el zX_d*tvAC5C%wt(Q2Ez`A19Au-$uuPm_u+w0NQ3&xIX~a>Z`F~fE9Q9^cE&d|k|0HH~ zMRpw4;tW+lo4AY1iS&fBV+tBKuoSJMDC>xd>3I}OF?p07P-IAe>8KDwhQvdJh!`Rv z5h@cOuk{PdF)(7V`5=08Q4<=|Eh|SEw0o&)6p8|7NcE)+ql-CxgNL~{kDY1d-=Fp zDc3oB>leI}=Qq#)lu$kXoA4^5=2=gorNKL4ci_7i)L=wGH~hHrS@&5 z{m1Ldg2S$K1Q|oxdI)uHWzM=2_kzInDcSO*kK$e9jmdrEbMl(z+L_tqo9lS*i_}kn z!;@N9MLo*)+f`bgcsnp+M^wTG5zUK1AH_N*J}0%g(JT*JQJZq;vtw-5lnG(htG=?7 zhw_1~o2Cd(i33AlIeVj|?9Tm&qvCsWI(@<#n!t znLtPUqTdi=-2-c@dL9+&V~78>innq7HK6}sa7(tNdd$dB8mb{68L6}pf%=0Vxv&2fE^zrxR3+&9%-B{LE0TiQCp z<=dTMw$y5YZ+$HN`TGk0xE5TYvP9mA+2j|y-h2PR;=dl;SSI@T{Q8|8*>_#1+|LL5 zOuXH$Xl-y@eLxYMFTl|~XYv;+EPVSlv2%vjxS`B?2<(y>vmtTYu%Ls;uc3`9|0CjvStG;=(H77 zW(Tb($g_&JEJzVCeZ+;b+j zU`>$Ac#rV_0Jx}>@(^yG$-VAlow)ClfvhlYn$9Y;Y$zSYCh8ahkQiw_0jfw{G!a7R zj7e+ji2wj_Txtr_vRd^L+(45&o!y6LCCwZf00P8Tv(6Alu%MoZHc=wz@u?aJG#N$E za!ie=%`zg!q)cXr&}2=RAvwgM0+#!w5HoKBzB_330w3IQ&3dG{zW( zhsXnmV{tnX6vMJ+9EKAU6M2aO9?e9Hy5(Zm!W*Frm_9Klrs@4DRN|K}A7B+-<0f!J4I-W6b7Z>Ga4`s$>454FbCXA-njASu5hGuC?3~dHwp+ayDD&QeQ$wLGP z#v^&YC^no+0gPZcAH@-b8*@Q$j#_6hQFiRyA#$}ES5X#LM;Qo}Tm*69cqWq(mk2OE z=Eq0<_%dG<=ef- zy>etS%+FFYlh1BD?`3nQm`QifWTNOn=l0L4tYb2F#B7;09xJI>QF-d_m4{SGFX>Ls z&b!i@bgZVWAn)1jQtio@Z@l|eaB5)qj!go5&|2B;*~{egdQZ^65r53yytQ`2d(+Yj z^8+f&*4;aQb*|)%50~MaQt10j)+gv4gmhVK zM-Z~oqs$hydNt9QUcY#ereeYiE426i(R}Z?$%4aR{^Ca2wLQfh1+~RbPxrXoh+JNO z%T1gyqvd8tcbbQI%DTax-`!lNvF`WQUEQ^Edw+k2&G?aJU#<#@Y6D!O9Ty$?u}c!9 z&Uq0Jov@v3ey;qjd$(oab133;*LVJ}g6{8qHmk~YdySp|nYjosa z_;nT%D)xTqESXc_U9_d6^#Pm-Hy@v<^!j$i(^%ZM0B}urXrr;t+0CZ%s)ggad(Q5Q z`$2o4HB~b6cFjMXmjs@&-k|oH3pe|wR< iV#{**js5QrOpOF+r-X*;DTNR0zXp{;BQKRkru++OlZcG~ literal 0 HcmV?d00001 diff --git a/_site/images/zip-icon.png b/_site/images/zip-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..162c425b432d8a80f54372594bbbb5ffba52b7b6 GIT binary patch literal 1661 zcmeAS@N?(olHy`uVBq!ia0vp^@<1%k!3HEh|D6&7q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfjXPhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9BihbVQ8#p01i9@ zV*^vYTs;#*Q)pNk>l>I_85vp`7yyx`f`W!`Vsd64NUtW?a9>|5&%EN2#JuEGPZwJy zpmlngnJHFg1{S6U&KAz*MovzKhOUNAE{?{ot|q4DM$V?DCT`9!y)OC5rManjB{01y z2)!;i^@7q(ZUN9{m(-%nveXo}qWoM1aQIkd;&zK8PV=C8Q*gV*38!9tpkwqwsQ@We zz=VKF4a9_}aUchtOH%WIS)&M;2m1PFTw-8gI^yZ#7*cU-O_*=Cu%kp>`mWBO2TZnh zY?-C;S7B-3%5RU3MqNo*-};OF&B05%<_P7MR`YA>@&o!Y0D&Nm8N}r)VT0u@VfJh^kHXLEM zsFu*MQ<`$h7SLT>_bep_oDE9r<|0Uf|{^wfhgjs3|Nt3tbTBm7EIh~r& z!}$D;X6F`}C0oC~dg*atOLkGo%#s^+8Pt~Gt-}-94;$(`YtorHn zTg!_rm#<&6W7D+AGn(QXH?7{k^`6w`bKk1XV)|8$^Vz5V+;HQ{^bhKH(gRO8^&3s| z;e0pandSEHDesQ1F^Cgdln5jlw%i2EZ$};U|K7S;CYVe~%M_-;Gj&&Yy%lHcyiR9F6db$0WOrMH`1g3&9(&{({|yn>rg?wMnwQjb1x9YttBn36WbE>+E&hT$BO62Ch56cR S7rUr~Dg;kgKbLh*2~7YV%7O|2 literal 0 HcmV?d00001 diff --git a/_site/index.html b/_site/index.html new file mode 100644 index 0000000..43a1b91 --- /dev/null +++ b/_site/index.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + jQuery.silver_track by tulios + + + +
+
+ +
+

jQuery.silver_track

+

A smart and very extensible jquery sliding carousel

+
+ +
+ Download .zip + Download .tar.gz + View on GitHub +
+ +
+ + + + +
+

+SilverTrack is a jQuery plugin designed to be extensible through other plugins. It has a small core and comes with very useful plugins +

+ +

+ Getting Started +

+ +

Let's setup a track with the navigator plugin. We will use a very simple markup, SilverTrack receives a container with your items, in our case, '.slider-container' and it leaves up to you to control the view port, so we will use '.view-port' to control de visibility. It also requires 'position: absolute' of your items

+ +
<div class="track my-track">
+
+  <!-- SilverTrack requires only this part -->
+  <div class="view-port">
+    <div class="slider-container">
+      <div class="item"><img src="http://lorempixel.com/230/134/nature/1/"></div>
+      <div class="item"><img src="http://lorempixel.com/230/134/nature/2/"></div>
+      <!-- ... -->
+    </div>
+  </div>
+
+  <!-- My custom navigator links -->
+  <div class="pagination">
+    <a href="#" class="prev disabled"></a>
+    <a href="#" class="next disabled"></a>
+  </div>
+
+</div>
+
+ +
.view-port {
+  width: 946px;
+  overflow: hidden;
+  position: relative;
+}
+.slider-container {
+  position: relative;
+  height: 138px;
+  margin: 0;
+  padding: 0;
+}
+.item {
+  position: absolute;
+  width: 234px;
+  height: 138px;
+  margin-right: 8px
+}
+
+ +

+After the minimum markup and css we will create our track. +

+ +
var container = $(".my-track");
+var track = container.find(".slider-container").silverTrack();
+
+// install the plugins you want, in our case Navigator
+track.install(new SilverTrack.Plugins.Navigator({
+  prev: $("a.prev", container),
+  next: $("a.next", container)
+}));
+
+track.start();
+
+ +

+and it's done! +

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+ +

+actually we add some css for the pagination arrows... +

+ +
+ + + +
+
+ + + diff --git a/_site/javascripts/basic_example.js b/_site/javascripts/basic_example.js new file mode 100644 index 0000000..6532c1b --- /dev/null +++ b/_site/javascripts/basic_example.js @@ -0,0 +1,12 @@ +$(function() { + var container = $(".my-track"); + var track = container.find(".slider-container").silverTrack(); + + // install the plugins you want, in our case Navigator + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.start(); +}); diff --git a/js/jquery-easing-1.3.0.js b/_site/javascripts/libs/jquery-easing-1.3.0.js similarity index 91% rename from js/jquery-easing-1.3.0.js rename to _site/javascripts/libs/jquery-easing-1.3.0.js index 4cd3938..e5ac0b7 100644 --- a/js/jquery-easing-1.3.0.js +++ b/_site/javascripts/libs/jquery-easing-1.3.0.js @@ -5,33 +5,33 @@ * to offer multiple easing options * * TERMS OF USE - jQuery Easing - * - * Open source under the BSD License. - * + * + * Open source under the BSD License. + * * Copyright © 2008 George McGinley Smith * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, + * + * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of + * + * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse + * + * Neither the name of the author nor the names of contributors may be used to endorse * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. * */ @@ -147,7 +147,7 @@ jQuery.extend( jQuery.easing, 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 (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; }, @@ -174,33 +174,32 @@ jQuery.extend( jQuery.easing, /* * * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * + * + * Open source under the BSD License. + * * Copyright © 2001 Robert Penner * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, + * + * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of + * + * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse + * + * Neither the name of the author nor the names of contributors may be used to endorse * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. * */ - diff --git a/js/modernizr_mediaqueries.js b/_site/javascripts/libs/modernizr_mediaqueries.js similarity index 99% rename from js/modernizr_mediaqueries.js rename to _site/javascripts/libs/modernizr_mediaqueries.js index 08d9209..1e075b8 100644 --- a/js/modernizr_mediaqueries.js +++ b/_site/javascripts/libs/modernizr_mediaqueries.js @@ -2,4 +2,3 @@ * Build: http://modernizr.com/download/#-mq-teststyles */ ;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var A in l)u(l,A)&&(q=A.toLowerCase(),e[q]=l[A](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document); - diff --git a/js/responsive_hub.js b/_site/javascripts/libs/responsive-hub.js similarity index 92% rename from js/responsive_hub.js rename to _site/javascripts/libs/responsive-hub.js index dde06f8..42035de 100644 --- a/js/responsive_hub.js +++ b/_site/javascripts/libs/responsive-hub.js @@ -1,7 +1,7 @@ /*! * ResponsiveHub - JavaScript goodies for Responsive Design * https://github.com/globocom/responsive-hub - * version: 0.3.0 + * version: 0.4.0 */ (function ($, window, document) { @@ -22,12 +22,9 @@ } } } - } + }; var ResponsiveHub = { - NAMESPACE: "ResponsiveHub_", - NAMESPACE_READY: "ResponsiveHubReady_", - currentLayout: null, resizeBound: false, hasMediaQuerySupport: false, @@ -77,11 +74,11 @@ }, ready: function(layout, callback) { - this._bind(this.NAMESPACE_READY, layout, callback); + this._bind("responsiveready", layout, callback); }, change: function(layout, callback) { - this._bind(this.NAMESPACE, layout, callback); + this._bind("responsivechange", layout, callback); }, isResizing: function() { @@ -113,7 +110,7 @@ if (layout != self.currentLayout) { self.currentLayout = layout; - self.windowObj.trigger(self.NAMESPACE + layout, [self._newEvent()]); + self.windowObj.trigger("responsivechange" + layout, [self._newEvent()]); } }, @@ -144,12 +141,17 @@ if (!this.currentLayout) { this.currentLayout = this.layout(); - var readyEvent = this.NAMESPACE_READY + this.currentLayout; + var readyEvent = "responsiveready" + this.currentLayout; + this.windowObj.trigger(readyEvent, [this._newEvent()]); this.windowObj.unbind(readyEvent); } }, + _unbind: function() { + $(window).unbind(".responsivehub"); + }, + _bind: function(namespace, layout, callback) { var self = this; var layouts = this._flatten(this._isArray(layout) ? layout : [layout]); @@ -158,7 +160,7 @@ } $.each(layouts, function(index, value) { - $(window).bind(namespace + value, eventCallback); + $(window).bind(namespace + value + ".responsivehub", eventCallback); }); }, @@ -204,4 +206,3 @@ }; })(jQuery, window, document); - diff --git a/_site/javascripts/main.js b/_site/javascripts/main.js new file mode 100644 index 0000000..d8135d3 --- /dev/null +++ b/_site/javascripts/main.js @@ -0,0 +1 @@ +console.log('This would be the main JS file.'); diff --git a/js/jquery.silver_track.js b/_site/javascripts/plugin/jquery.silver_track.js similarity index 91% rename from js/jquery.silver_track.js rename to _site/javascripts/plugin/jquery.silver_track.js index 7a84f98..02b65fb 100644 --- a/js/jquery.silver_track.js +++ b/_site/javascripts/plugin/jquery.silver_track.js @@ -1,7 +1,7 @@ /*! * jQuery SilverTrack * https://github.com/tulios/jquery.silver_track - * version: 0.1.0 + * version: 0.2.2 */ (function ($, window, document) { @@ -12,7 +12,7 @@ var container = $(this); if (!container.data(instanceName)) { - var options = $.extend({}, $.fn.silverTrack.options, options); + options = $.extend({}, $.fn.silverTrack.options, options); var instance = new SilverTrack(container, options); container.data(instanceName, instance); return instance; @@ -57,22 +57,21 @@ * opts: {animate: true|false} */ goToPage: function(page, opts) { - if (!this.paginationEnabled || - (page <= this.currentPage && this.currentPage === 1) || - page > this.totalPages || - page === this.currentPage) { - return; - } + opts = $.extend({animate: true}, opts); + var duration = opts.animate ? this.options.duration : 0; var useCover = this.options.cover && (page === 1); - var isHorizontal = this.options.mode === "horizontal"; var direction = page > this.currentPage ? "next" : "prev"; var items = useCover ? this._getCover() : this._calculateItemsForPagination(page); + var isHorizontal = this.options.mode === "horizontal"; + + if (!this._canPaginate(page)) { + return; + } if (items.length > 0) { var shift = this._calculateItemLeft(items.get(0)); var event = {name: direction, page: page, cover: useCover, items: items}; - var opts = $.extend({animate: true}, opts); if (items.length < this.options.perPage && !useCover && isHorizontal) { shift -= this.itemWidth * (this.options.perPage - items.length); @@ -82,7 +81,8 @@ this._executeAll("beforePagination", [event]); this.paginationEnabled = false; - this._animate(shift, event, opts.animate); + this._animate(shift, event, duration); + this._adjustHeight(items, duration); } }, @@ -108,9 +108,9 @@ * keepCurrentPage: true|false, // default: false * animate: true|false // default: false * } - */ + */ restart: function(opts) { - var opts = $.extend({ + opts = $.extend({ page: 1, keepCurrentPage: false, animate: false @@ -166,20 +166,26 @@ return $("." + this.options.itemClass + ":first", this.container); }, - _animate: function(shift, event, isAnimated) { + _canPaginate: function(page) { + if (!this.paginationEnabled || page > this.totalPages || page < 1) { + return false; + } + + return true; + }, + + _animate: function(shift, event, duration) { var self = this; - var duration = isAnimated ? this.options.duration : 0; this._executeAll("beforeAnimation", [event]); - this.container.stop().animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { + this.container.animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { self.paginationEnabled = true; self._executeAll("afterAnimation", [event]); - self._adjustHeight(event.items); }); }, - _adjustHeight: function(items) { - if (this.options.autoHeight == true) { + _adjustHeight: function(items, duration) { + if (this.options.autoHeight === true) { var newHeight = 0; if (this.options.mode === "horizontal") { @@ -193,7 +199,7 @@ var event = {items: items, newHeight: newHeight}; this._executeAll("beforeAdjustHeight", [event]); - this.container.stop().animate({"height": newHeight + "px"}); + this.container.animate({"height": newHeight + "px"}, duration); this._executeAll("afterAdjustHeight", [event]); } }, @@ -318,6 +324,7 @@ $.silverTrackPlugin = function(name, obj) { SilverTrack.Plugins[name] = function(settings){ var options = $.extend({}, this.defaults, settings); + this.PluginName = name; this.initialize(options); }; @@ -357,4 +364,3 @@ window.SilverTrack = SilverTrack; })(jQuery, window, document); - diff --git a/_site/javascripts/plugin/jquery.silver_track_recipes.js b/_site/javascripts/plugin/jquery.silver_track_recipes.js new file mode 100644 index 0000000..df3cbe8 --- /dev/null +++ b/_site/javascripts/plugin/jquery.silver_track_recipes.js @@ -0,0 +1,66 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + * + * SilverTrack Recipes + * version: 0.1.0 + */ + +(function ($, window, document) { + + if (!window.SilverTrack) { + return; + } + + SilverTrack.Recipes = {}; + SilverTrack.Factory = function(element, options) { + this.element = element; + this.options = $.extend({}, options); + } + + SilverTrack.Factory.prototype = { + track: null, + + create: function(configCallback) { + configCallback(this.externalInterface()); + return this.track; + }, + + externalInterface: function() { + var self = this; + var defaultTrack = function() { + if (!self.track) { + self.track = self.element.silverTrack(); + } + } + + return { + createTrack: function(callback) { + if (callback !== undefined) { + self.track = callback(self.element, self.options); + } + defaultTrack(); + }, + + installPlugins: function(callback) { + defaultTrack(); + if (callback !== undefined) { + callback(self.track, self.options); + } + } + } + } + } + + $.silverTrackRecipes = function(recipeName, configCallback) { + SilverTrack.Recipes[recipeName] = function(element, options) { + return new SilverTrack.Factory(element, options).create(configCallback); + } + } + + $.silverTrackRecipes.create = function(recipeName, element, options) { + return SilverTrack.Recipes[recipeName](element, options); + } + +})(jQuery, window, document); diff --git a/js/jquery.silver_track.bullet_navigator.js b/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js similarity index 97% rename from js/jquery.silver_track.bullet_navigator.js rename to _site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js index 877c061..e161d44 100644 --- a/js/jquery.silver_track.bullet_navigator.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js @@ -1,10 +1,10 @@ /*! * jQuery SilverTrack - Bullet Navigator Plugin * https://github.com/tulios/jquery.silver_track - * version: 0.1.0 + * version: 0.2.2 */ -(function ($, window, document) { +(function($, window, document) { /* * track.install(new SilverTrack.Plugins.BulletNavigator({ @@ -88,4 +88,3 @@ }); })(jQuery, window, document); - diff --git a/js/jquery.silver_track.navigator.js b/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js similarity index 96% rename from js/jquery.silver_track.navigator.js rename to _site/javascripts/plugin/plugins/jquery.silver_track.navigator.js index bf30ef1..1501020 100644 --- a/js/jquery.silver_track.navigator.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js @@ -1,10 +1,10 @@ /*! * jQuery SilverTrack - Navigator Plugin * https://github.com/tulios/jquery.silver_track - * version: 0.1.0 + * version: 0.2.2 */ -(function ($, window, document) { +(function($, window, document) { /* * track.install(new SilverTrack.Plugins.Navigator({ @@ -67,4 +67,3 @@ }); })(jQuery, window, document); - diff --git a/js/jquery.silver_track.remote_content.js b/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js similarity index 99% rename from js/jquery.silver_track.remote_content.js rename to _site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js index 205d689..5f9d523 100644 --- a/js/jquery.silver_track.remote_content.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js @@ -1,10 +1,10 @@ /*! * jQuery SilverTrack - Remote Content Plugin * https://github.com/tulios/jquery.silver_track - * version: 0.1.0 + * version: 0.2.2 */ -(function ($, window, document) { +(function($, window, document) { /* * track.install(new SilverTrack.Plugins.RemoteContent({ diff --git a/js/jquery.silver_track.responsive_hub_connector.js b/_site/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js similarity index 95% rename from js/jquery.silver_track.responsive_hub_connector.js rename to _site/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js index dcdce06..3c52af0 100644 --- a/js/jquery.silver_track.responsive_hub_connector.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js @@ -1,10 +1,10 @@ /*! * jQuery SilverTrack - Responsive Hub Connector Plugin * https://github.com/tulios/jquery.silver_track - * version: 0.1.0 + * version: 0.2.2 */ -(function ($, window, document) { +(function($, window, document) { /* * track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ @@ -38,4 +38,3 @@ }); })(jQuery, window, document); - diff --git a/_site/params.json b/_site/params.json new file mode 100644 index 0000000..9a11d20 --- /dev/null +++ b/_site/params.json @@ -0,0 +1 @@ +{"name":"Jquery.silver track","tagline":"A smart and very extensible jquery sliding carousel","body":"### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:\r\n\r\n```\r\n$ cd your_repo_root/repo_name\r\n$ git fetch origin\r\n$ git checkout gh-pages\r\n```\r\n\r\nIf you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.\r\n\r\n### Designer Templates\r\nWe've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.\r\n\r\n### Rather Drive Stick?\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `` element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/_site/stylesheets/base_example.css b/_site/stylesheets/base_example.css new file mode 100644 index 0000000..f69f62d --- /dev/null +++ b/_site/stylesheets/base_example.css @@ -0,0 +1,73 @@ +.view-port { + overflow: hidden; + position: relative; +} + +.view-port, .track .inner { + width: 960px; +} + +.slider-container { + position: relative; + height: 138px; + margin: 0; + padding: 0; +} +.item { + position: absolute; + + width: 234px; + height: 138px; + margin-right: 8px +} + +.track { + position: relative; + background-color: white; + padding: 10px 2px; + border-radius: 3px; + margin-bottom: 20px; +} + +.track a.prev, +.track a.next { + display: block; + position: absolute; + top: 50%; + margin-top: -32px; + width: 64px; + height: 64px; + background: url("../images/arrows.png"); + background-repeat: no-repeat; +} + +.track a.prev.disabled, +.track a.next.disabled { + display: none; +} + +.track a.prev { + left: 0; + background-position: 0 0; +} + +.track a.prev:hover { + background-position: 0 -66px; +} + +.track a.prev:active { + background-position: 0 -132px; +} + +.track a.next { + right: 0; + background-position: -64px 0; +} + +.track a.next:hover { + background-position: -64px -132px; +} + +.track a.next:active { + background-position: -64px -198px; +} diff --git a/_site/stylesheets/print.css b/_site/stylesheets/print.css new file mode 100644 index 0000000..541695b --- /dev/null +++ b/_site/stylesheets/print.css @@ -0,0 +1,226 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +body { + font-size: 13px; + line-height: 1.5; + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + color: #000; +} + +a { + color: #d5000d; + font-weight: bold; +} + +header { + padding-top: 35px; + padding-bottom: 10px; +} + +header h1 { + font-weight: bold; + letter-spacing: -1px; + font-size: 48px; + color: #303030; + line-height: 1.2; +} + +header h2 { + letter-spacing: -1px; + font-size: 24px; + color: #aaa; + font-weight: normal; + line-height: 1.3; +} +#downloads { + display: none; +} +#main_content { + padding-top: 20px; +} + +code, pre { + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal; + color: #222; + margin-bottom: 30px; + font-size: 12px; +} + +code { + padding: 0 3px; +} + +pre { + border: solid 1px #ddd; + padding: 20px; + overflow: auto; +} +pre code { + padding: 0; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + border: 1px solid #ebebeb; + text-align: center; + font-weight: 300; +} + +form { + background: #f2f2f2; + padding: 20px; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 2.8em; +} + +h2 { + font-size: 22px; + font-weight: bold; + color: #303030; + margin-bottom: 8px; +} + +h3 { + color: #d5000d; + font-size: 18px; + font-weight: bold; + margin-bottom: 8px; +} + +h4 { + font-size: 16px; + color: #303030; + font-weight: bold; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + font-weight: 300; + margin-bottom: 20px; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + font-size: 1.6em; + border-left: 10px solid #e9e9e9; + margin-bottom: 20px; + padding: 0 0 0 30px; +} + +ul li { + list-style: disc inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 3px; +} + +dl dd { + font-style: italic; + font-weight: 100; +} + +footer { + margin-top: 40px; + padding-top: 20px; + padding-bottom: 30px; + font-size: 13px; + color: #aaa; +} + +footer a { + color: #666; +} + +/* MISC */ +.clearfix:after { + clear: both; + content: '.'; + display: block; + visibility: hidden; + height: 0; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} \ No newline at end of file diff --git a/_site/stylesheets/pygment_monokai.css b/_site/stylesheets/pygment_monokai.css new file mode 100644 index 0000000..005d477 --- /dev/null +++ b/_site/stylesheets/pygment_monokai.css @@ -0,0 +1,64 @@ +.highlight .hll { background-color: #49483e } +.highlight .c { color: #75715e } /* Comment */ +.highlight .err { color: #960050; background-color: #1e0010 } /* Error */ +.highlight .k { color: #66d9ef } /* Keyword */ +.highlight .l { color: #ae81ff } /* Literal */ +.highlight .n { color: #f8f8f2 } /* Name */ +.highlight .o { color: #f92672 } /* Operator */ +.highlight .p { color: #f8f8f2 } /* Punctuation */ +.highlight .cm { color: #75715e } /* Comment.Multiline */ +.highlight .cp { color: #75715e } /* Comment.Preproc */ +.highlight .c1 { color: #75715e } /* Comment.Single */ +.highlight .cs { color: #75715e } /* Comment.Special */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .kc { color: #66d9ef } /* Keyword.Constant */ +.highlight .kd { color: #66d9ef } /* Keyword.Declaration */ +.highlight .kn { color: #f92672 } /* Keyword.Namespace */ +.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ +.highlight .kr { color: #66d9ef } /* Keyword.Reserved */ +.highlight .kt { color: #66d9ef } /* Keyword.Type */ +.highlight .ld { color: #e6db74 } /* Literal.Date */ +.highlight .m { color: #ae81ff } /* Literal.Number */ +.highlight .s { color: #e6db74 } /* Literal.String */ +.highlight .na { color: #a6e22e } /* Name.Attribute */ +.highlight .nb { color: #f8f8f2 } /* Name.Builtin */ +.highlight .nc { color: #a6e22e } /* Name.Class */ +.highlight .no { color: #66d9ef } /* Name.Constant */ +.highlight .nd { color: #a6e22e } /* Name.Decorator */ +.highlight .ni { color: #f8f8f2 } /* Name.Entity */ +.highlight .ne { color: #a6e22e } /* Name.Exception */ +.highlight .nf { color: #a6e22e } /* Name.Function */ +.highlight .nl { color: #f8f8f2 } /* Name.Label */ +.highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +.highlight .nx { color: #a6e22e } /* Name.Other */ +.highlight .py { color: #f8f8f2 } /* Name.Property */ +.highlight .nt { color: #f92672 } /* Name.Tag */ +.highlight .nv { color: #f8f8f2 } /* Name.Variable */ +.highlight .ow { color: #f92672 } /* Operator.Word */ +.highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +.highlight .mf { color: #ae81ff } /* Literal.Number.Float */ +.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ +.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ +.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ +.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ +.highlight .sc { color: #e6db74 } /* Literal.String.Char */ +.highlight .sd { color: #e6db74 } /* Literal.String.Doc */ +.highlight .s2 { color: #e6db74 } /* Literal.String.Double */ +.highlight .se { color: #ae81ff } /* Literal.String.Escape */ +.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ +.highlight .si { color: #e6db74 } /* Literal.String.Interpol */ +.highlight .sx { color: #e6db74 } /* Literal.String.Other */ +.highlight .sr { color: #e6db74 } /* Literal.String.Regex */ +.highlight .s1 { color: #e6db74 } /* Literal.String.Single */ +.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ +.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ +.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ +.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ +.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ + +.highlight .gh { } /* Generic Heading & Diff Header */ +.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ +.highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ +.highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ diff --git a/_site/stylesheets/stylesheet.css b/_site/stylesheets/stylesheet.css new file mode 100644 index 0000000..951dccb --- /dev/null +++ b/_site/stylesheets/stylesheet.css @@ -0,0 +1,371 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* LAYOUT STYLES */ +body { + font-size: 1em; + line-height: 1.5; + background: #e7e7e7 url(../images/body-bg.png) 0 0 repeat; + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); + color: #6d6d6d; +} + +a { + color: #d5000d; +} +a:hover { + color: #c5000c; +} + +header { + padding-top: 35px; + padding-bottom: 25px; +} + +header h1 { + font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif; font-weight: 900; + letter-spacing: -1px; + font-size: 48px; + color: #303030; + line-height: 1.2; +} + +header h2 { + letter-spacing: -1px; + font-size: 24px; + color: #aaa; + font-weight: normal; + line-height: 1.3; +} + +#container { + background: transparent url(../images/highlight-bg.jpg) 50% 0 no-repeat; + min-height: 595px; +} + +.inner { + width: 960px; + margin: 0 auto; +} + +#container .inner img { + max-width: 100%; +} + +#downloads { + margin-bottom: 40px; +} + +a.button { + -moz-border-radius: 30px; + -webkit-border-radius: 30px; + border-radius: 30px; + border-top: solid 1px #cbcbcb; + border-left: solid 1px #b7b7b7; + border-right: solid 1px #b7b7b7; + border-bottom: solid 1px #b3b3b3; + color: #303030; + line-height: 25px; + font-weight: bold; + font-size: 15px; + padding: 12px 8px 12px 8px; + display: block; + float: left; + width: 179px; + margin-right: 14px; + background: #fdfdfd; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f2f2f2 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f2f2f2)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f2f2f2',GradientType=0 ); /* IE6-9 */ + -webkit-box-shadow: 10px 10px 5px #888; + -moz-box-shadow: 10px 10px 5px #888; + box-shadow: 0px 1px 5px #e8e8e8; +} +a.button:hover { + border-top: solid 1px #b7b7b7; + border-left: solid 1px #b3b3b3; + border-right: solid 1px #b3b3b3; + border-bottom: solid 1px #b3b3b3; + background: #fafafa; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f6f6f6 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f6f6f6)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f6f6f6, 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */ +} + +a.button span { + padding-left: 50px; + display: block; + height: 23px; +} + +#download-zip span { + background: transparent url(../images/zip-icon.png) 12px 50% no-repeat; +} +#download-tar-gz span { + background: transparent url(../images/tar-gz-icon.png) 12px 50% no-repeat; +} +#view-on-github span { + background: transparent url(../images/octocat-icon.png) 12px 50% no-repeat; +} +#view-on-github { + margin-right: 0; +} + +code, pre { + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal; + color: #222; + margin-bottom: 30px; + font-size: 14px; +} + +code { + background-color: #f2f2f2; + border: solid 1px #ddd; + padding: 0 3px; +} + +pre { + padding: 20px; + background: #303030; + color: #f2f2f2; + text-shadow: none; + overflow: auto; + border-radius: 3px; +} +pre code { + color: #f2f2f2; + background-color: #303030; + border: none; + padding: 0; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +hr { + height: 1px; + line-height: 1px; + margin-top: 1em; + padding-bottom: 1em; + border: none; + background: transparent url('../images/hr.png') 50% 0 no-repeat; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + border: 1px solid #ebebeb; + text-align: center; + font-weight: 300; +} + +form { + background: #f2f2f2; + padding: 20px; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 32px; +} + +h2 { + font-size: 22px; + font-weight: bold; + color: #303030; + margin-bottom: 8px; +} + +h3 { + color: #d5000d; + font-size: 18px; + font-weight: bold; + margin-bottom: 8px; +} + +h4 { + font-size: 16px; + color: #303030; + font-weight: bold; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + font-weight: 300; + margin-bottom: 20px; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + font-size: 1.6em; + border-left: 10px solid #e9e9e9; + margin-bottom: 20px; + padding: 0 0 0 30px; +} + +ul li { + list-style: disc inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 3px; +} + +dl dt { + color: #303030; +} + +footer { + margin-top: 40px; + padding-top: 20px; + padding-bottom: 30px; + font-size: 13px; + color: #aaa; +} + +footer a { + color: #666; +} +footer a:hover { + color: #444; +} + +/* MISC */ +.clearfix:after { + clear: both; + content: '.'; + display: block; + visibility: hidden; + height: 0; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} + +/* #Media Queries +================================================== */ + +/* Smaller than standard 960 (devices and browsers) */ +@media only screen and (max-width: 959px) {} + +/* Tablet Portrait size to standard 960 (devices and browsers) */ +@media only screen and (min-width: 768px) and (max-width: 959px) {} + +/* All Mobile Sizes (devices and browser) */ +@media only screen and (max-width: 767px) { + header { + padding-top: 10px; + padding-bottom: 10px; + } + #downloads { + margin-bottom: 25px; + } + #download-zip, #download-tar-gz { + display: none; + } + .inner { + width: 94%; + margin: 0 auto; + } +} + +/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ +@media only screen and (min-width: 480px) and (max-width: 767px) {} + +/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ +@media only screen and (max-width: 479px) {} diff --git a/css/gh-buttons.css b/css/gh-buttons.css deleted file mode 100644 index 80787ae..0000000 --- a/css/gh-buttons.css +++ /dev/null @@ -1,401 +0,0 @@ -/* ------------------------------------------ - * CSS3 GITHUB BUTTONS (Nicolas Gallagher) - * Licensed under Unlicense - * http://github.com/necolas/css3-github-buttons - * --------------------------------------- */ - - -/* ============================================================================= - Base Button - ========================================================================== */ - -.button { - position: relative; - overflow: visible; - display: inline-block; - padding: 0.5em 1em; - border: 1px solid #d4d4d4; - margin: 0; - text-decoration: none; - text-align: center; - text-shadow: 1px 1px 0 #fff; - font:11px/normal sans-serif; - color: #333; - white-space: nowrap; - cursor: pointer; - outline: none; - background-color: #ececec; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec)); - background-image: -moz-linear-gradient(#f4f4f4, #ececec); - background-image: -ms-linear-gradient(#f4f4f4, #ececec); - background-image: -o-linear-gradient(#f4f4f4, #ececec); - background-image: linear-gradient(#f4f4f4, #ececec); - -moz-background-clip: padding; /* for Firefox 3.6 */ - background-clip: padding-box; - border-radius: 0.2em; - /* IE hacks */ - zoom: 1; - *display: inline; -} - -.button:hover, -.button:focus, -.button:active, -.button.active { - border-color: #3072b3; - border-bottom-color: #2a65a0; - text-decoration: none; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - color: #fff; - background-color: #3c8dde; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#599bdc), to(#3072b3)); - background-image: -moz-linear-gradient(#599bdc, #3072b3); - background-image: -o-linear-gradient(#599bdc, #3072b3); - background-image: linear-gradient(#599bdc, #3072b3); -} - -.button:active, -.button.active { - border-color: #2a65a0; - border-bottom-color: #3884cd; - background-color: #3072b3; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3072b3), to(#599bdc)); - background-image: -moz-linear-gradient(#3072b3, #599bdc); - background-image: -ms-linear-gradient(#3072b3, #599bdc); - background-image: -o-linear-gradient(#3072b3, #599bdc); - background-image: linear-gradient(#3072b3, #599bdc); -} - -/* overrides extra padding on button elements in Firefox */ -.button::-moz-focus-inner { - padding: 0; - border: 0; -} - - -/* ============================================================================= - Button icons - ========================================================================== */ - -.button.icon:before { - content: ""; - position: relative; - top: 1px; - float:left; - width: 12px; - height: 12px; - margin: 0 0.75em 0 -0.25em; - background: url(../img/gh-icons.png) 0 99px no-repeat; -} - -.button.arrowup.icon:before { background-position: 0 0; } -.button.arrowup.icon:hover:before, -.button.arrowup.icon:focus:before, -.button.arrowup.icon:active:before { background-position: -12px 0; } - -.button.arrowdown.icon:before { background-position: 0 -12px; } -.button.arrowdown.icon:hover:before, -.button.arrowdown.icon:focus:before, -.button.arrowdown.icon:active:before { background-position: -12px -12px; } - -.button.arrowleft.icon:before { background-position: 0 -24px; } -.button.arrowleft.icon:hover:before, -.button.arrowleft.icon:focus:before, -.button.arrowleft.icon:active:before { background-position: -12px -24px; } - -.button.arrowright.icon:before { float:right; margin: 0 -0.25em 0 0.5em; background-position: 0 -36px; } -.button.arrowright.icon:hover:before, -.button.arrowright.icon:focus:before, -.button.arrowright.icon:active:before { background-position: -12px -36px; } - -.button.approve.icon:before { background-position: 0 -48px; } -.button.approve.icon:hover:before, -.button.approve.icon:focus:before, -.button.approve.icon:active:before { background-position: -12px -48px; } - -.button.add.icon:before { background-position: 0 -288px; } -.button.add.icon:hover:before, -.button.add.icon:focus:before, -.button.add.icon:active:before { background-position: -12px -288px; } - -.button.remove.icon:before { background-position: 0 -60px; } -.button.remove.icon:hover:before, -.button.remove.icon:focus:before, -.button.remove.icon:active:before { background-position: -12px -60px; } - -.button.log.icon:before { background-position: 0 -72px; } -.button.log.icon:hover:before, -.button.log.icon:focus:before, -.button.log.icon:active:before { background-position: -12px -72px; } - -.button.calendar.icon:before { background-position: 0 -84px; } -.button.calendar.icon:hover:before, -.button.calendar.icon:focus:before, -.button.calendar.icon:active:before { background-position: -12px -84px; } - -.button.chat.icon:before { background-position: 0 -96px; } -.button.chat.icon:hover:before, -.button.chat.icon:focus:before, -.button.chat.icon:active:before { background-position: -12px -96px; } - -.button.clock.icon:before { background-position: 0 -108px; } -.button.clock.icon:hover:before, -.button.clock.icon:focus:before, -.button.clock.icon:active:before { background-position: -12px -108px; } - -.button.settings.icon:before { background-position: 0 -120px; } -.button.settings.icon:hover:before, -.button.settings.icon:focus:before, -.button.settings.icon:active:before { background-position: -12px -120px; } - -.button.comment.icon:before { background-position: 0 -132px; } -.button.comment.icon:hover:before, -.button.comment.icon:focus:before, -.button.comment.icon:active:before { background-position: -12px -132px; } - -.button.fork.icon:before { background-position: 0 -144px; } -.button.fork.icon:hover:before, -.button.fork.icon:focus:before, -.button.fork.icon:active:before { background-position: -12px -144px; } - -.button.like.icon:before { background-position: 0 -156px; } -.button.like.icon:hover:before, -.button.like.icon:focus:before, -.button.like.icon:active:before { background-position: -12px -156px; } - -.button.favorite.icon:before { background-position: 0 -348px; } -.button.favorite.icon:hover:before, -.button.favorite.icon:focus:before, -.button.favorite.icon:active:before { background-position: -12px -348px; } - -.button.home.icon:before { background-position: 0 -168px; } -.button.home.icon:hover:before, -.button.home.icon:focus:before, -.button.home.icon:active:before { background-position: -12px -168px; } - -.button.key.icon:before { background-position: 0 -180px; } -.button.key.icon:hover:before, -.button.key.icon:focus:before, -.button.key.icon:active:before { background-position: -12px -180px; } - -.button.lock.icon:before { background-position: 0 -192px; } -.button.lock.icon:hover:before, -.button.lock.icon:focus:before, -.button.lock.icon:active:before { background-position: -12px -192px; } - -.button.unlock.icon:before { background-position: 0 -204px; } -.button.unlock.icon:hover:before, -.button.unlock.icon:focus:before, -.button.unlock.icon:active:before { background-position: -12px -204px; } - -.button.loop.icon:before { background-position: 0 -216px; } -.button.loop.icon:hover:before, -.button.loop.icon:focus:before, -.button.loop.icon:active:before { background-position: -12px -216px; } - -.button.search.icon:before { background-position: 0 -228px; } -.button.search.icon:hover:before, -.button.search.icon:focus:before, -.button.search.icon:active:before { background-position: -12px -228px; } - -.button.mail.icon:before { background-position: 0 -240px; } -.button.mail.icon:hover:before, -.button.mail.icon:focus:before, -.button.mail.icon:active:before { background-position: -12px -240px; } - -.button.move.icon:before { background-position: 0 -252px; } -.button.move.icon:hover:before, -.button.move.icon:focus:before, -.button.move.icon:active:before { background-position: -12px -252px; } - -.button.edit.icon:before { background-position: 0 -264px; } -.button.edit.icon:hover:before, -.button.edit.icon:focus:before, -.button.edit.icon:active:before { background-position: -12px -264px; } - -.button.pin.icon:before { background-position: 0 -276px; } -.button.pin.icon:hover:before, -.button.pin.icon:focus:before, -.button.pin.icon:active:before { background-position: -12px -276px; } - -.button.reload.icon:before { background-position: 0 -300px; } -.button.reload.icon:hover:before, -.button.reload.icon:focus:before, -.button.reload.icon:active:before { background-position: -12px -300px; } - -.button.rss.icon:before { background-position: 0 -312px; } -.button.rss.icon:hover:before, -.button.rss.icon:focus:before, -.button.rss.icon:active:before { background-position: -12px -312px; } - -.button.tag.icon:before { background-position: 0 -324px; } -.button.tag.icon:hover:before, -.button.tag.icon:focus:before, -.button.tag.icon:active:before { background-position: -12px -324px; } - -.button.trash.icon:before { background-position: 0 -336px; } -.button.trash.icon:hover:before, -.button.trash.icon:focus:before, -.button.trash.icon:active:before { background-position: -12px -336px; } - -.button.user.icon:before { background-position: 0 -360px; } -.button.user.icon:hover:before, -.button.user.icon:focus:before, -.button.user.icon:active:before { background-position: -12px -360px; } - - -/* ============================================================================= - Button extensions - ========================================================================== */ - -/* Primary button - ========================================================================== */ - -.button.primary { - font-weight: bold; -} - -/* Danger button - ========================================================================== */ - -.button.danger { - color: #900; -} - -.button.danger:hover, -.button.danger:focus, -.button.danger:active { - border-color: #b53f3a; - border-bottom-color: #a0302a; - color: #fff; - background-color: #dc5f59; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dc5f59), to(#b33630)); - background-image: -moz-linear-gradient(#dc5f59, #b33630); - background-image: -ms-linear-gradient(#dc5f59, #b33630); - background-image: -o-linear-gradient(#dc5f59, #b33630); - background-image: linear-gradient(#dc5f59, #b33630); -} - -.button.danger:active, -.button.danger.active { - border-color: #a0302a; - border-bottom-color: #bf4843; - background-color: #b33630; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b33630), to(#dc5f59)); - background-image: -moz-linear-gradient(#b33630, #dc5f59); - background-image: -ms-linear-gradient(#b33630, #dc5f59); - background-image: -o-linear-gradient(#b33630, #dc5f59); - background-image: linear-gradient(#b33630, #dc5f59); -} - -/* Pill button - ========================================================================== */ - -.button.pill { - border-radius: 50em; -} - -/* Disabled button - ========================================================================== */ - -.button.disable { - opacity: 0.5; -} - -/* Big button - ========================================================================== */ - -.button.big { - font-size: 14px; -} - -.button.big.icon:before { - top: 0; -} - - -/* ============================================================================= - Button groups - ========================================================================== */ - -/* Standard group - ========================================================================== */ - -.button-group { - display: inline-block; - list-style: none; - padding: 0; - margin: 0; - /* IE hacks */ - zoom: 1; - *display: inline; -} - -.button + .button, -.button + .button-group, -.button-group + .button, -.button-group + .button-group { - margin-left: 15px; -} - -.button-group li { - float: left; - padding: 0; - margin: 0; -} - -.button-group .button { - float: left; - margin-left: -1px; -} - -.button-group > .button:not(:first-child):not(:last-child), -.button-group li:not(:first-child):not(:last-child) .button { - border-radius: 0; -} - -.button-group > .button:first-child, -.button-group li:first-child .button { - margin-left: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.button-group > .button:last-child, -.button-group li:last-child > .button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -/* Minor group - ========================================================================== */ - -.button-group.minor-group .button { - border: 1px solid #d4d4d4; - text-shadow: none; - background-image: none; - background-color: #fff; -} - -.button-group.minor-group .button:hover, -.button-group.minor-group .button:focus { - background-color: #599bdc; -} - -.button-group.minor-group .button:active, -.button-group.minor-group .button.active { - background-color: #3072b3; -} - -.button-group.minor-group .button.icon:before { - opacity: 0.8; -} - -/* ============================================================================= - Button container (mixing buttons and groups, e.g., nav bar) - ========================================================================== */ - -.button-container .button, -.button-container .button-group { - vertical-align: top; -} diff --git a/css/responsive.css b/css/responsive.css deleted file mode 100644 index afff46c..0000000 --- a/css/responsive.css +++ /dev/null @@ -1,348 +0,0 @@ -/* Tablet */ -@media only screen and (max-width:980px){ - .head { - width: 730px; - } - - .view-port, - .track .inner, - .slider-container .item.cover { - width: 706px; - } - - .view-port h2 { - font-size: 1.3em; - } - - .slider-container { - height: 130px; - } - - .slider-container .item { - height: 114px; - } - - .slider-container .item, - .slider-container .item img, - .slider-container .item .img-area img, - #example-4 img { - width: 164px; - height: auto; - } - - .slider-container .item.cover > img { - width: 343px; - } - - .slider-container .item.cover .img-area { - margin-left: 10px; - } - - .editorial { - width: 169px; - height: 195px; - } - - .editorial .title { - font-size: 18px; - margin: 10px 0 0 16px; - } - - .editorial .desc { - margin-left: 16px; - font-size: 13px; - } - - .slider-container.big, - .slider-container.big .item { - height: 196px; - } - - .slider-container.big .item .img-area { - height: 196px; - } - - .slider-container .item.cover .img-block, - .img-block { - margin-bottom: 0; - height: 104px; - } - - .side-a, .side-b { - width: 349px; - } - - .side-a { - margin-right: 8px; - } - - .slider-container .item .side-a > img, - .slider-container .item .side-b > img { - width: 343px; - height: auto; - } - - .slider-container .item.cover-2 .img-area { - margin: 9px 0 0 0; - } - - .slider-container .item.cover-2 .img-area .img-block:first-child { - margin-right: 15px; - } - - .slider-container.huge, - .slider-container .item.cover-2 { - height: 300px; - } -} - -/* Small Tablet */ -@media only screen and (max-width:730px){ - .head { - width: 480px; - } - - .view-port, - .track .inner, - .slider-container .item.cover { - width: 456px; - } - - .slider-container { - height: 102px; - } - - .slider-container .item { - margin-right: 12px; - height: 86px; - } - - .slider-container .item, - .slider-container .item img, - .slider-container .item .img-area img { - width: 144px; - } - - .slider-container .item.cover > img { - width: 303px; - } - - .editorial { - display: none; - } - - .slider-container .item.cover .img-area { - margin-left: 9px; - } - - .slider-container .item.cover .img-block, - .img-block { - height: 89px; - } - - .side-a, .side-b { - width: 220px; - } - - .side-a { - margin-right: 8px; - } - - .slider-container .item .side-a > img, - .slider-container .item .side-b > img { - width: 220px; - } - - .slider-container .item.cover-2 .img-area { - margin: 0; - } - - .slider-container.huge .item { - height: 259px; - margin-bottom: 0; - } - - .slider-container.huge, - .slider-container .item.cover-2 { - height: 300px; - } - - .slider-container.remote { - height: 540px; - } - - .slider-container.remote .item, - .example-4 .view-port { - width: 350px; - } - - .slider-container.remote .item { - height: 127px; - margin-bottom: 8px; - } - - .slider-container.remote .item > img, - .slider-container.remote .item p { - float: left; - } - - #example-4 img { - width: 220px; - height: auto; - } - - .slider-container.remote .item p { - padding: 30px 15px; - } - - .example-4 .view-port { - margin: 0 auto; - } -} - -/* Phone */ -@media only screen and (max-width:480px){ - - .head { - width: 320px; - } - - .head h1 { - font-size: 1.9em; - } - - .view-port, - .track .inner, - .slider-container .item.cover { - width: 302px; - } - - .view-port h2 { - font-size: 1.5em; - } - - .slider-container { - height: 560px; - } - - .slider-container .item { - width: 296px; - height: 124px; - } - - .slider-container .item img, - .slider-container .item p { - float: left; - } - - .slider-container .item img, - #example-4 img { - width: 220px; - } - - .slider-container .item p { - margin: 50px 0 0 10px; - } - - .slider-container.big, - .slider-container.big .item.cover { - height: 264px; - } - - .slider-container.big .item, - .slider-container.big .item.cover > img, - .slider-container.big .item.cover .img-area { - width: 302px; - } - - .slider-container.big .item.cover > img { - float: none; - } - - .slider-container .item.cover .img-block, - .slider-container.big .item, - .slider-container .item.cover .img-area { - height: 88px; - margin-bottom: 0; - } - - .img-block { - width: 151px; - } - - .img-area .img-block { - width: 148px; - } - - .slider-container .item.cover .img-area { - float: none; - clear: both; - margin-left: 0; - margin-top: 1px; - } - - .slider-container .item.cover .img-area .img-block:first-child { - margin-right: 6px; - } - - .slider-container .item .img-area img, - .slider-container .item .img-block img { - float: none; - width: 148px; - } - - .slider-container .item.cover .img-block, - .img-block { - float: left; - } - - .side-a, - .side-b, - .slider-container.huge .item { - width: 302px; - } - - .slider-container.huge .item { - height: 176px; - } - - .side-a { - margin-right: 0; - } - - .slider-container .item .side-a > img, - .slider-container .item .side-b > img { - width: 302px; - } - - .slider-container.huge, - .slider-container .item.cover-2 { - height: 528px; - } - - .example-4 .view-port, - .slider-container.remote .item { - width: 302px; - } - - .slider-container.remote .item p { - margin: 15px 0; - } - - .slider-container.remote { - height: 464px; - } - - #example-4 .item { - height: 108px; - text-align: center; - } - - #example-4 img { - width: 186px; - } - - .example-4 .loading { - width: 302px; - } -} diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 539eb93..0000000 --- a/css/style.css +++ /dev/null @@ -1,324 +0,0 @@ -body { - margin: 0; - padding: 0; -} - -h2 { - padding: 0; - margin: 0 0 10px 0; -} - -#forkme_banner { - display: block; - position: absolute; - top: 0; - right: 10px; - z-index: 10; - padding: 10px 50px 10px 10px; - color: white; - background: url("../img/blacktocat.png") #6A3 no-repeat 95% 50%; - font-weight: 700; - box-shadow: 0 0 10px rgba(0, 0, 0, .5); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - text-decoration: none; -} - -.head { - padding: 30px 0; - width: 960px; - margin: auto; -} - -.head h1 { - font-weight: 200; - font-family: Helvetica,Arial,Verdana,sans-serif; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); - text-transform: uppercase; - color: #999; -} - -.actions { - margin-top: 10px; -} - -.track { - width: 100%; - position: relative; -} - -.view-port, .track .inner { - width: 946px; -} - -.view-port { - overflow: hidden; - position: relative; -} - -.track .inner { - position: relative; - - margin: auto; - margin-bottom: 30px; - padding: 10px; - - background: #F1F1F1; - border-radius: 4px; -} - -.track .inner h2 { - font-weight: 200; - font-family: Helvetica,Arial,Verdana,sans-serif; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9); - text-transform: uppercase; - color: #999; -} - -.track .inner h2:hover { - color: #6A3; -} - -.track a.prev, -.track a.next { - display: block; - position: absolute; - top: 50%; - margin-top: -32px; - width: 64px; - height: 64px; - background: url("../img/arrows.png"); - background-repeat: no-repeat; -} - -.track a.prev.disabled, -.track a.next.disabled { - display: none; -} - -.track a.prev { - left: 0; - background-position: 0 0; -} - -.track a.prev:hover { - background-position: 0 -66px; -} - -.track a.prev:active { - background-position: 0 -132px; -} - -.track a.next { - right: 0; - background-position: -64px 0; -} - -.track a.next:hover { - background-position: -64px -132px; -} - -.track a.next:active { - background-position: -64px -198px; -} - -.slider-container { - position: relative; - margin: 0; - padding: 0; - - height: 166px; -} - -.slider-container.big { - height: 288px; -} - -.slider-container.huge { - height: 432px; -} - -.slider-container .item { - position: absolute; - - width: 224px; - height: 150px; - - margin-right: 16px; - margin-bottom: 16px; -} - -.slider-container .item img { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 2px solid white; -} - -.slider-container.big .item, -.slider-container.big .item .img-area { - height: 288px; -} - -.slider-contaiber.huge .item { - margin-bottom: 12px; -} - -.slider-container .item p { - padding: 0; - margin: 0; -} - -.slider-container .item.cover { - width: 940px; -} - -.slider-container .item.cover-2 { - height: 432px; -} - -.slider-container .item.cover img { - float: left; -} - -.slider-container .item.cover-2 img { - float: none; -} - -.slider-container .item.cover .img-area { - float: right; - margin-left: 16px; -} - -.slider-container .item.cover-2 .img-area { - float: none; - margin-left: 0; - margin-top: 12px; -} - -.slider-container .item.cover-2 .img-area .img-block:first-child { - margin-right: 14px; -} - -.slider-container .item.cover .img-block { - height: 128px; -} - -.slider-container .item.cover-2 .img-block { - float: left; -} - -.img-block { - margin-bottom: 16px; -} - -.editorial { - float: right; - width: 200px; - - padding-right: 20px; - height: 272px; - background: white; -} - -.editorial .title { - font-size: 24px; - margin: 20px 0 0 20px; -} - -.editorial .desc { - font-size: 14px; - line-height: 18px; - padding-top: 8px; - margin-left: 20px; -} - -.side-a, .side-b { - float: left; - width: 462px; -} - -.side-a { - margin-right: 16px; -} - -.side-a > img, .side-b > img { - width: 462px; - height: 272px; -} - -.bullet-pagination { - width: 100%; - text-align: center; - margin-top: 15px; -} - -.bullet { - display: inline-block; - background: #999; - padding: 4px; - border-radius: 6px; - margin-right: 5px; - opacity: 0.4; - - -webkit-transition: opacity 0.5s linear; - -moz-transition: opacity 0.5s linear; - -ms-transition: opacity 0.5s linear; - -o-transition: opacity 0.5s linear; - transition: opacity 0.5s linear; -} - -.bullet.active { - opacity: 1; -} - -.bullet:last-child { - margin-right: 0; -} - -#example-4 img { - width: 228px; - height: 132px; -} - -.example-4 .loading { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - background: rgba(255, 255, 255, 0.8); - border-radius: 4px; - text-align: center; - line-height: 140px; - padding: 4px 0; - z-index: 1; -} - -.example-4 .loading:before { - content: "loading..."; -} - -.example-4 .bullet { - cursor: default; -} - -.example-1 a.prev, -.example-1 a.next { - margin-top: -69px; -} - -.example-2 a.prev, -.example-2 a.next { - margin-top: -58px; -} - -.example-3 a.prev, -.example-3 a.next { - margin-top: -53px; -} - -.example-4 a.prev, -.example-4 a.next { - margin-top: -68px; -} diff --git a/images/arrows.png b/images/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8e96b8e49ffdc18b4e00270f34c4396561967e GIT binary patch literal 6538 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 O0`#< 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 - - - - - - - - - - Jquery.silver track by tulios - - - -
-
- -
-

Jquery.silver track

-

A smart and very extensible jquery sliding carousel

-
- -
- Download .zip - Download .tar.gz - View on GitHub -
- -
- -
-

-Welcome to GitHub Pages.

- -

This automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:

- -
$ cd your_repo_root/repo_name
-$ git fetch origin
-$ git checkout gh-pages
-
- -

If you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.

+--- +layout: nil +--- -

-Designer Templates

+{% assign root_path = '' %} +{% include head.html %} + + -

We've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.

+
+

+SilverTrack is a jQuery plugin designed to be extensible through other plugins. It has a small core and comes with very useful plugins +

-Rather Drive Stick?

+ Getting Started + -

If you prefer to not use the automatic generator, push a branch named gh-pages to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.

+

Let's setup a track with the navigator plugin. We will use a very simple markup, SilverTrack receives a container with your items, in our case, '.slider-container' and it leaves up to you to control the view port, so we will use '.view-port' to control de visibility. It also requires 'position: absolute' of your items

-

-Authors and Contributors

+{% highlight html %} +
-

You can @mention a GitHub username to generate a link to their profile. The resulting <a> element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.

+ +
+
+
+
+ +
+
+ + + + +
+{% endhighlight %} + +{% highlight css %} +.view-port { + width: 946px; + overflow: hidden; + position: relative; +} +.slider-container { + position: relative; + height: 138px; + margin: 0; + padding: 0; +} +.item { + position: absolute; + width: 234px; + height: 138px; + margin-right: 8px +} +{% endhighlight %} + +

+After the minimum markup and css we will create our track. +

+ +{% highlight js %} +var container = $(".my-track"); +var track = container.find(".slider-container").silverTrack(); + +// install the plugins you want, in our case Navigator +track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) +})); + +track.start(); +{% endhighlight %} + +

+and it's done! +

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-

-Support or Contact

+ +
-

Having trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.

-
+

+actually we add some css for the pagination arrows... +

- +
- -
-
- - \ No newline at end of file +{% include footer.html %} diff --git a/javascripts/basic_example.js b/javascripts/basic_example.js new file mode 100644 index 0000000..6532c1b --- /dev/null +++ b/javascripts/basic_example.js @@ -0,0 +1,12 @@ +$(function() { + var container = $(".my-track"); + var track = container.find(".slider-container").silverTrack(); + + // install the plugins you want, in our case Navigator + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.start(); +}); diff --git a/javascripts/libs/jquery-easing-1.3.0.js b/javascripts/libs/jquery-easing-1.3.0.js new file mode 100644 index 0000000..e5ac0b7 --- /dev/null +++ b/javascripts/libs/jquery-easing-1.3.0.js @@ -0,0 +1,205 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + 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; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ diff --git a/javascripts/libs/modernizr_mediaqueries.js b/javascripts/libs/modernizr_mediaqueries.js new file mode 100644 index 0000000..1e075b8 --- /dev/null +++ b/javascripts/libs/modernizr_mediaqueries.js @@ -0,0 +1,4 @@ +/* Modernizr 2.6.2 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-mq-teststyles + */ +;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var A in l)u(l,A)&&(q=A.toLowerCase(),e[q]=l[A](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document); diff --git a/javascripts/libs/responsive-hub.js b/javascripts/libs/responsive-hub.js new file mode 100644 index 0000000..42035de --- /dev/null +++ b/javascripts/libs/responsive-hub.js @@ -0,0 +1,208 @@ +/*! + * ResponsiveHub - JavaScript goodies for Responsive Design + * https://github.com/globocom/responsive-hub + * version: 0.4.0 + */ + +(function ($, window, document) { + + $.responsiveHub = function(settings) { + if (typeof settings === "object") { + ResponsiveHub.init(settings); + + } else if (typeof settings === "string") { + var args = [].splice.call(arguments, 0, arguments.length); + var methodName = args.splice(0, 1)[0]; + + if (ResponsiveHub[methodName]) { + return ResponsiveHub[methodName].apply(ResponsiveHub, args); + } else { + if (window.console && window.console.log) { + console.log("[ResponsiveHub] Undefined method '" + methodName + "'"); + } + } + } + }; + + var ResponsiveHub = { + currentLayout: null, + resizeBound: false, + hasMediaQuerySupport: false, + windowObj: null, + loaded: false, + resizeStopDelay: 500, + _resizeTimer: null, + + init: function(settings) { + if (!this.loaded) { + this.loaded = true; + this.windowObj = this._getWindow(); + this.layouts = settings.layouts; + this.defaultLayout = settings.defaultLayout; + + this._boot(); + } + }, + + self: function() { + return this; + }, + + width: function() { + return this.windowObj.width(); + }, + + layout: function() { + if (!this.hasMediaQuerySupport) { + return this.defaultLayout; + } + + var widths = []; + var keys = this._keys(this.layouts); + for (var j in keys) { + widths.push(parseInt(keys[j], 10)); + } + + widths.sort(function(a,b){return b - a}); + var width = this.width(); + for (var i in widths) { + var w = widths[i]; + if (width >= w) return this.layouts[w]; + } + + return this.layouts[widths[widths.length - 1]]; + }, + + ready: function(layout, callback) { + this._bind("responsiveready", layout, callback); + }, + + change: function(layout, callback) { + this._bind("responsivechange", layout, callback); + }, + + isResizing: function() { + return this._resizeTimer !== null; + }, + + resizeStart: function(callback) { + this.windowObj.bind("resizeStart", callback); + }, + + resizeStop: function(callback) { + this.windowObj.bind("resizeStop", callback); + }, + + isTouch: function() { + var wnd = (this.windowObj || this._getWindow()).get(0); + return !!(('ontouchstart' in wnd) || (wnd.DocumentTouch && wnd.document instanceof DocumentTouch)); + }, + + hasFlash: function() { + try { return !! new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); } catch(e1) {} + var mimeType = this._mimeTypeFlash(); + return !! (mimeType && mimeType.enabledPlugin); + }, + + _updateLayout: function() { + var self = $.responsiveHub("self"); + var layout = self.layout(); + + if (layout != self.currentLayout) { + self.currentLayout = layout; + self.windowObj.trigger("responsivechange" + layout, [self._newEvent()]); + } + }, + + _resizeStartStop: function(event) { + var self = $.responsiveHub("self"); + + if (self._resizeTimer) { + clearTimeout(self._resizeTimer); + } else { + self.windowObj.trigger("resizeStart", [event]); + } + + self._resizeTimer = setTimeout(function() { + self._resizeTimer = null; + self.windowObj.trigger("resizeStop", [event]); + }, self.resizeStopDelay); + }, + + _boot: function() { + this.hasMediaQuerySupport = Modernizr.mq("only all"); + if (!this.resizeBound && this.hasMediaQuerySupport) { + + this.windowObj.bind("resize", this._updateLayout); + this.windowObj.bind("resize", this._resizeStartStop); + + this.resizeBound = true; + } + + if (!this.currentLayout) { + this.currentLayout = this.layout(); + var readyEvent = "responsiveready" + this.currentLayout; + + this.windowObj.trigger(readyEvent, [this._newEvent()]); + this.windowObj.unbind(readyEvent); + } + }, + + _unbind: function() { + $(window).unbind(".responsivehub"); + }, + + _bind: function(namespace, layout, callback) { + var self = this; + var layouts = this._flatten(this._isArray(layout) ? layout : [layout]); + var eventCallback = function(event, responsiveHubEvent) { + callback(responsiveHubEvent); + } + + $.each(layouts, function(index, value) { + $(window).bind(namespace + value + ".responsivehub", eventCallback); + }); + }, + + _newEvent: function() { + return {layout: this.currentLayout, touch: this.isTouch()}; + }, + + // https://github.com/jiujitsumind/underscorejs/blob/master/underscore.js#L644 + _keys: Object.keys || function(obj) { + var keys = []; + for (var key in obj) if (obj.hasOwnProperty(key)) keys[keys.length] = key; + return keys; + }, + + _flatten: function(array, shallow) { + var self = this; + var flatten = function(input, shallow, output) { + for (var i = 0; i < input.length; i++) { + var value = input[i]; + if (self._isArray(value)) { + shallow ? output.push(value) : flatten(value, shallow, output); + } else { + output.push(value); + } + } + return output; + } + + return flatten(array, shallow, []); + }, + + _getWindow: function() { + return $(window); + }, + + _mimeTypeFlash: function() { + return navigator.mimeTypes["application/x-shockwave-flash"]; + }, + + _isArray: Array.isArray || function(obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + } + }; + +})(jQuery, window, document); diff --git a/javascripts/plugin/jquery.silver_track.js b/javascripts/plugin/jquery.silver_track.js new file mode 100644 index 0000000..02b65fb --- /dev/null +++ b/javascripts/plugin/jquery.silver_track.js @@ -0,0 +1,366 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + */ + +(function ($, window, document) { + + var instanceName = "silverTrackInstance"; + + $.fn.silverTrack = function(options) { + var container = $(this); + + if (!container.data(instanceName)) { + options = $.extend({}, $.fn.silverTrack.options, options); + var instance = new SilverTrack(container, options); + container.data(instanceName, instance); + return instance; + } + + return container.data(instanceName); + }; + + $.fn.silverTrack.options = { + perPage: 4, + itemClass: "item", + mode: "horizontal", + autoHeight: false, + cover: false, + duration: "slow", + easing: "swing" + }; + + var SilverTrack = function (container, options) { + this.options = options; + this.container = container; + this.paginationEnabled = true; + this.calculateTotalPages = true; + this.currentPage = 1; + this.totalPages = 1; + this.plugins = []; + + this._items = null; + }; + + SilverTrack.prototype = { + + start: function() { + this._validateAnimationEasing(); + this._executeAll("beforeStart"); + this._init(); + this._executeAll("afterStart"); + }, + + /* + * page: Number + * opts: {animate: true|false} + */ + goToPage: function(page, opts) { + opts = $.extend({animate: true}, opts); + + var duration = opts.animate ? this.options.duration : 0; + var useCover = this.options.cover && (page === 1); + var direction = page > this.currentPage ? "next" : "prev"; + var items = useCover ? this._getCover() : this._calculateItemsForPagination(page); + var isHorizontal = this.options.mode === "horizontal"; + + if (!this._canPaginate(page)) { + return; + } + + if (items.length > 0) { + var shift = this._calculateItemLeft(items.get(0)); + var event = {name: direction, page: page, cover: useCover, items: items}; + + if (items.length < this.options.perPage && !useCover && isHorizontal) { + shift -= this.itemWidth * (this.options.perPage - items.length); + } + + this.currentPage = page; + this._executeAll("beforePagination", [event]); + this.paginationEnabled = false; + + this._animate(shift, event, duration); + this._adjustHeight(items, duration); + } + }, + + next: function() { + this.goToPage(this.currentPage + 1); + }, + + prev: function() { + this.goToPage(this.currentPage - 1); + }, + + hasPrev: function() { + return !(this.currentPage === 1); + }, + + hasNext: function() { + return !(this.currentPage === this.totalPages || this.totalPages <= 1); + }, + + /* + * { + * page: Number, // default: 1 + * keepCurrentPage: true|false, // default: false + * animate: true|false // default: false + * } + */ + restart: function(opts) { + opts = $.extend({ + page: 1, + keepCurrentPage: false, + animate: false + }, opts); + + if (opts.keepCurrentPage) { + opts.page = this.currentPage; + } + + this.container.css("height", ""); + this._getItems(true).css("top", ""); + + this.paginationEnabled = true; + this.currentPage = 1; + + this._init(); + this.goToPage(opts.page, {animate: opts.animate}); + this._executeAll("afterRestart"); + }, + + install: function(plugin) { + this.plugins.push(plugin); + this._callFunction(plugin, "onInstall"); + return this; + }, + + reloadItems: function() { + this._items = null; + }, + + updateTotalPages: function(totalPages) { + this.calculateTotalPages = false; + this.totalPages = this._abs(totalPages); + this._executeAll("onTotalPagesUpdate"); + }, + + _init: function() { + this._positionElements(); + if (this.calculateTotalPages) { + this._calculateTotalPages(); + } + }, + + _getItems: function(ignoreCoverFilter) { + if (!this._items) { + this._items = $("." + this.options.itemClass, this.container); + } + + return !ignoreCoverFilter && this.options.cover ? this._items.not(":first") : this._items; + }, + + _getCover: function() { + return $("." + this.options.itemClass + ":first", this.container); + }, + + _canPaginate: function(page) { + if (!this.paginationEnabled || page > this.totalPages || page < 1) { + return false; + } + + return true; + }, + + _animate: function(shift, event, duration) { + var self = this; + + this._executeAll("beforeAnimation", [event]); + this.container.animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { + self.paginationEnabled = true; + self._executeAll("afterAnimation", [event]); + }); + }, + + _adjustHeight: function(items, duration) { + if (this.options.autoHeight === true) { + var newHeight = 0; + + if (this.options.mode === "horizontal") { + newHeight = $(items[0]).outerHeight(true); + + } else if (this.options.mode === "vertical") { + items.each(function(index, value) { + newHeight += $(value).outerHeight(true); + }); + } + + var event = {items: items, newHeight: newHeight}; + this._executeAll("beforeAdjustHeight", [event]); + this.container.animate({"height": newHeight + "px"}, duration); + this._executeAll("afterAdjustHeight", [event]); + } + }, + + _positionElements: function() { + this.container.css({"left": "0px"}); + this.itemWidth = this._calculateItemWidth(); + this.coverWidth = this._calculateCoverWidth(); + + if (this.options.mode === "horizontal") { + this._positionHorizontal(); + + } else if (this.options.mode === "vertical") { + this._positionVertical(); + } + }, + + _positionHorizontal: function() { + var width = 0; + this._getItems(true).each(function(index, value) { + var item = $(value); + item.css({"left": width + "px"}); + width += item.outerWidth(true); + }); + + this.container.css("width", width + "px"); + }, + + _positionVertical: function() { + var width = 0; + var height = 0; + + var perPage = this.options.perPage; + var useCover = this.options.cover; + var pageItem = 0; + + this._getItems(true).each(function(index, value) { + var item = $(value); + item.css({"top": height + "px", "left": width + "px"}); + pageItem++; + + if (pageItem === perPage || (useCover && index === 0)) { + pageItem = 0; + height = 0; + width += item.outerWidth(true); + + } else { + height += item.outerHeight(true); + } + }); + + this.container.css("width", width + this.itemWidth + "px"); + }, + + _calculateTotalPages: function() { + this.totalPages = Math.ceil(this._getItems().length/this.options.perPage); + + if (this.options.cover) { + this.totalPages += 1; + } + }, + + _calculateContainerLeft: function() { + return this._abs(this.container.css("left")); + }, + + _calculateItemLeft: function(item) { + return this._abs($(item).css("left")); + }, + + _calculateItemsForPagination: function(page) { + var delta = this.options.cover ? (page - 1) * this.options.perPage : page * this.options.perPage; + return this._getItems().slice(delta - this.options.perPage, delta); + }, + + _calculateWidth: function(items, isCover) { + if (this.options.cover && isCover) { + return this.coverWidth; + } + + return items.length * this.itemWidth; + }, + + _calculateItemWidth: function() { + var complement = this.options.cover ? ":eq(1)" : ":first"; + var item = $("." + this.options.itemClass + complement, this.container); + return item.outerWidth(true); + }, + + _calculateCoverWidth: function() { + return this.options.cover ? this._getCover().outerWidth(true) : 0; + }, + + _validateAnimationEasing: function() { + var easingFuctionExists = !!($.easing && $.easing[this.options.easing]); + + if (!easingFuctionExists) { + this.options.easing = $.fn.silverTrack.options.easing; + } + }, + + _executeAll: function(name, args) { + for (var i = 0; i < this.plugins.length; i++) { + this._callFunction(this.plugins[i], name, args); + } + }, + + _callFunction: function(obj, name, args) { + if(obj && name && typeof obj[name] === 'function') { + obj[name].apply(obj, [this].concat(args || [])); + } + }, + + _abs: function(string) { + return Math.abs(parseInt(string, 10)); + } + + } + + SilverTrack.Plugins = {}; + + $.silverTrackPlugin = function(name, obj) { + SilverTrack.Plugins[name] = function(settings){ + var options = $.extend({}, this.defaults, settings); + this.PluginName = name; + this.initialize(options); + }; + + SilverTrack.Plugins[name].prototype = $.extend({ + defaults: {}, + initialize: function(options) {}, + + onInstall: function(track) {}, + beforeStart: function(track) {}, + afterStart: function(track) {}, + afterRestart: function(track) {}, + onTotalPagesUpdate: function(track){}, + + /* Event format + * { + * name: "prev", // or "next" + * page: 1, + * cover: false, + * items: [] + * } + */ + beforeAnimation: function(track, event) {}, + afterAnimation: function(track, event) {}, + beforePagination: function(track, event) {}, + + /* Event format + * { + * items: [], + * newHeight: 150 + * } + */ + beforeAdjustHeight: function(track, event) {}, + afterAdjustHeight: function(track, event) {} + }, obj); + } + + window.SilverTrack = SilverTrack; + +})(jQuery, window, document); diff --git a/javascripts/plugin/jquery.silver_track_recipes.js b/javascripts/plugin/jquery.silver_track_recipes.js new file mode 100644 index 0000000..df3cbe8 --- /dev/null +++ b/javascripts/plugin/jquery.silver_track_recipes.js @@ -0,0 +1,66 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + * + * SilverTrack Recipes + * version: 0.1.0 + */ + +(function ($, window, document) { + + if (!window.SilverTrack) { + return; + } + + SilverTrack.Recipes = {}; + SilverTrack.Factory = function(element, options) { + this.element = element; + this.options = $.extend({}, options); + } + + SilverTrack.Factory.prototype = { + track: null, + + create: function(configCallback) { + configCallback(this.externalInterface()); + return this.track; + }, + + externalInterface: function() { + var self = this; + var defaultTrack = function() { + if (!self.track) { + self.track = self.element.silverTrack(); + } + } + + return { + createTrack: function(callback) { + if (callback !== undefined) { + self.track = callback(self.element, self.options); + } + defaultTrack(); + }, + + installPlugins: function(callback) { + defaultTrack(); + if (callback !== undefined) { + callback(self.track, self.options); + } + } + } + } + } + + $.silverTrackRecipes = function(recipeName, configCallback) { + SilverTrack.Recipes[recipeName] = function(element, options) { + return new SilverTrack.Factory(element, options).create(configCallback); + } + } + + $.silverTrackRecipes.create = function(recipeName, element, options) { + return SilverTrack.Recipes[recipeName](element, options); + } + +})(jQuery, window, document); diff --git a/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js b/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js new file mode 100644 index 0000000..e161d44 --- /dev/null +++ b/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js @@ -0,0 +1,90 @@ +/*! + * jQuery SilverTrack - Bullet Navigator Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + */ + +(function($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.BulletNavigator({ + * container: $(".bullet-pagination") + * })); + * + */ + $.silverTrackPlugin("BulletNavigator", { + defaults: { + bulletClass: "bullet", + activeClass: "active" + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.container = this.options.container; + }, + + onInstall: function(track) { + this.track = track; + }, + + afterStart: function() { + var self = this; + this._createBullets(); + this._getBulletByPage(1).addClass(this.options.activeClass); + this._getBullets().click(function(e) { + e.preventDefault(); + var bullet = $(this); + self._updateBullets(bullet); + self.track.goToPage(bullet.data("page")); + }); + }, + + beforePagination: function(track, event) { + var bullet = this._getBulletByPage(event.page); + this._updateBullets(bullet); + }, + + afterRestart: function() { + var bullet = this._getBulletByPage(this.track.currentPage); + this._updateBullets(bullet); + }, + + onTotalPagesUpdate: function() { + this._clearBullets(); + this._createBullets(); + this._getBullets().click(function(e) { + e.preventDefault(); + }); + }, + + _clearBullets: function() { + $("." + this.options.bulletClass, this.container).remove(); + }, + + _createBullets: function() { + for (var i = 0; i < this.track.totalPages; i++) { + this.container.append(this._createBullet(i + 1)); + } + }, + + _updateBullets: function(bullet) { + this._getBullets().removeClass(this.options.activeClass); + bullet.addClass(this.options.activeClass); + }, + + _getBulletByPage: function(page) { + return $("." + this.options.bulletClass + "[data-page='" + page + "']", this.container); + }, + + _getBullets: function() { + return $("." + this.options.bulletClass, this.container); + }, + + _createBullet: function(page) { + return $("", {"class": this.options.bulletClass, "data-page": page, "href": "#"}); + } + + }); + +})(jQuery, window, document); diff --git a/javascripts/plugin/plugins/jquery.silver_track.navigator.js b/javascripts/plugin/plugins/jquery.silver_track.navigator.js new file mode 100644 index 0000000..1501020 --- /dev/null +++ b/javascripts/plugin/plugins/jquery.silver_track.navigator.js @@ -0,0 +1,69 @@ +/*! + * jQuery SilverTrack - Navigator Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + */ + +(function($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.Navigator({ + * prev: $("a.prev"), + * next: $("a.next") + * })); + * + */ + $.silverTrackPlugin("Navigator", { + defaults: { + disabledClass: "disabled" + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.prev = this.options.prev; + this.next = this.options.next; + + var self = this; + this.prev.addClass(this.options.disabledClass).click(function(e) { + e.preventDefault(); + self.track.prev(); + }); + + this.next.addClass(this.options.disabledClass).click(function(e) { + e.preventDefault(); + self.track.next(); + }); + }, + + onInstall: function(track) { + this.track = track; + }, + + afterStart: function() { + this.afterAnimation(); + }, + + afterAnimation: function() { + this.track.hasPrev() ? this._enable(this.prev) : this._disable(this.prev); + this.track.hasNext() ? this._enable(this.next) : this._disable(this.next); + }, + + afterRestart: function() { + this.afterAnimation(); + }, + + onTotalPagesUpdate: function() { + this.afterAnimation(); + }, + + _enable: function(element) { + element.removeClass(this.options.disabledClass); + }, + + _disable: function(element) { + element.addClass(this.options.disabledClass); + } + }); + +})(jQuery, window, document); diff --git a/javascripts/plugin/plugins/jquery.silver_track.remote_content.js b/javascripts/plugin/plugins/jquery.silver_track.remote_content.js new file mode 100644 index 0000000..5f9d523 --- /dev/null +++ b/javascripts/plugin/plugins/jquery.silver_track.remote_content.js @@ -0,0 +1,229 @@ +/*! + * jQuery SilverTrack - Remote Content Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + */ + +(function($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.RemoteContent({ + * + * // A string or a function to generate the URL + * url: function(track, page, perPage) { + * return "/my/url/page/" + page; + * }, + * + * beforeStart: function(track) { + * }, + * + * beforeSend: function(track) { + * }, + * + * // It should return an array with the elements to be appended to + * // the container + * process: function(track, perPage, json) { + * var data = json.data; + * var array = []; + * + * for (var i = 0; i < perPage; i++) { + * array.push( + * $("
", {"class": "item"}). + * append($("", {"src": data[i].img_url})). + * append($("

", {"text": data[i].title})) + * ); + * } + * + * return array; + * }, + * + * beforeAppend: function(track, items) { + * }, + * + * updateTotalPages: function(track, json) { + * track.updateTotalPages(json.total_pages); + * } + * })); + * + */ + $.silverTrackPlugin("RemoteContent", { + defaults: { + lazy: true, + + type: "GET", + params: {}, + + beforeStart: function(track) {}, + beforeSend: function(track, jqXHR, settings) {}, + beforeAppend: function(track) {}, + afterAppend: function(track) {}, + process: function(track, perPage, data) {}, + updateTotalPages: function(track, data) {}, + onError: function(track, jqXHR, textStatus, errorThrown) {} + }, + + initialize: function(options) { + this.track = null; + this.options = options; + this.ajaxCache = {}; + this.filled = false; + this.loadContentEnabled = true; + }, + + onInstall: function(track) { + this.track = track; + this._updateNavigationControls(); + }, + + afterStart: function() { + this.options.beforeStart(this.track); + if (this.options.lazy) { + + this._loadContent(this.track.currentPage, function() { + this.filled = true; + this.track.restart(); + }); + + } else { + this.filled = true; + } + }, + + afterAnimation: function(track, event) { + this.loadContentEnabled = true; + }, + + _updateNavigationControls: function() { + var self = this; + this.track.next = function() { + if (self.track.hasNext() && self.loadContentEnabled) { + + var page = self.track.currentPage + 1; + self.loadContentEnabled = false; + self._loadContent(page, function() { + self.track.goToPage(page); + }); + + } + } + }, + + _loadContent: function(page, contentLoadedCallback) { + var self = this; + var url = this._generateUrl(page); + + if (!this.ajaxCache[url]) { + + $.ajax( + $.extend(this._ajaxDefaults(), { + url: url, + success: function(data) { + self._onSuccess(url, data); + contentLoadedCallback.apply(self); + } + }) + ); + + } else { + contentLoadedCallback.apply(self); + } + }, + + _onSuccess: function(url, data) { + this.ajaxCache[url] = true; + var items = this.options.process(this.track, this.track.options.perPage, data) || []; + + this.options.beforeAppend(this.track, items); + this._updateItemsPosition(items); + this.options.afterAppend(this.track, items); + + this.options.updateTotalPages(this.track, data); + this.track.reloadItems(); + }, + + _onBeforeSend: function(jqXHR, settings) { + this.options.beforeSend(this.track, jqXHR, settings); + }, + + _onError: function(jqXHR, textStatus, errorThrown) { + if (window.console) { + console.info('SilverTrack.Plugins.RemoteContent - Error:', textStatus); + } + + this.options.onError(this.track, jqXHR, textStatus, errorThrown); + }, + + _updateItemsPosition: function(items) { + if (this.track.options.mode === "horizontal") { + this._positionHorizontal(items); + + } else if (this.track.options.mode === "vertical") { + this._positionVertical(items); + } + }, + + _positionHorizontal: function(items) { + var lastItem = $("." + this.track.options.itemClass + ":last", this.track.container); + + var width = parseInt(lastItem.css("left"), 10) || 0; + if (width !== 0) { + width += this.track.itemWidth; + } + + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.css({"left": width + "px"}); + this.track.container.append(item); + width += item.outerWidth(true); + } + + this.track.container.width(width); + }, + + _positionVertical: function(items) { + var itemWidth = this.track.itemWidth; + var width = Math.abs(parseInt(this.track.container.css("left"), 10)) || 0; + + if (this.filled) { + width += itemWidth; + this.track.container.css("width", (this.track.currentPage + 1) * itemWidth); + } + + var height = 0; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + item.css({"left": width + "px", "top": height + "px"}); + this.track.container.append(item); + height += item.outerHeight(true); + } + }, + + _generateUrl: function(page) { + var url = this.options.url; + var perPage = this.track.options.perPage; + + if (typeof url === 'function') { + return url(this.track, page, perPage); + } + + return url.replace(/{page}/, page).replace(/{perPage}/, perPage); + }, + + _ajaxDefaults: function() { + var self = this; + return { + context: this.track.container, + type: this.options.type, + data: this.options.params, + beforeSend: function(jqXHR, settings) { + self._onBeforeSend(jqXHR, settings); + }, + error: function(jqXHR, textStatus, errorThrown) { + self._onError(jqXHR, textStatus, errorThrown); + } + } + } + + }); + +})(jQuery, window, document); diff --git a/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js b/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js new file mode 100644 index 0000000..3c52af0 --- /dev/null +++ b/javascripts/plugin/plugins/jquery.silver_track.responsive_hub_connector.js @@ -0,0 +1,40 @@ +/*! + * jQuery SilverTrack - Responsive Hub Connector Plugin + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + */ + +(function($, window, document) { + + /* + * track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ + * layouts: ["phone", "small-tablet", "tablet", "web"], + * onReady: function(track, options, event) {}, + * onChange: function(track, options, event) {} + * })); + * + */ + $.silverTrackPlugin("ResponsiveHubConnector", { + initialize: function(options) { + this.options = options; + this.layouts = this.options.layouts; + this.enabled = !!$.responsiveHub; + }, + + onInstall: function(track) { + this.track = track; + + if (this.enabled) { + var self = this; + $.responsiveHub("ready", this.layouts, function(event) { + self.options.onReady(self.track, self.options, event); + }); + + $.responsiveHub("change", this.layouts, function(event) { + self.options.onChange(self.track, self.options, event); + }); + } + } + }); + +})(jQuery, window, document); diff --git a/js/example1.js b/js/example1.js deleted file mode 100644 index 3b6f2bb..0000000 --- a/js/example1.js +++ /dev/null @@ -1,45 +0,0 @@ -//================================================= -// Example 1 - basic track -//================================================= - -jQuery(function() { - - var example = $("#example-1"); - var parent = example.parents(".track"); - var track = example.silverTrack(SilverTrackExample.defaults); - - track.install(new SilverTrack.Plugins.Navigator({ - prev: $("a.prev", parent), - next: $("a.next", parent) - })); - - track.install(new SilverTrack.Plugins.BulletNavigator({ - container: $(".bullet-pagination", parent) - })); - - track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ - layouts: ["phone", "small-tablet", "tablet", "web"], - onReady: function(track, options, event) { - options.onChange(track, options, event); - }, - - onChange: function(track, options, event) { - track.options.mode = "horizontal"; - track.options.autoheight = false; - track.options.perPage = 4; - - if (event.layout === "small-tablet") { - track.options.perPage = 3; - - } else if (event.layout === "phone") { - track.options.mode = "vertical"; - track.options.autoHeight = true; - } - - track.restart({keepCurrentPage: true}); - } - })); - - track.start(); - -}); diff --git a/js/example2_and_3.js b/js/example2_and_3.js deleted file mode 100644 index 7a23fa0..0000000 --- a/js/example2_and_3.js +++ /dev/null @@ -1,53 +0,0 @@ -//================================================= -// Example 2 and 3 - cover -//================================================= - -jQuery(function() { - - $("#example-2, #example-3").each(function() { - - var example = $(this); - var parent = example.parents(".track"); - var track = example.silverTrack($.extend({}, SilverTrackExample.defaults, {cover: true})); - - track.install(new SilverTrack.Plugins.Navigator({ - prev: $("a.prev", parent), - next: $("a.next", parent) - })); - - track.install(new SilverTrack.Plugins.BulletNavigator({ - container: $(".bullet-pagination", parent) - })); - - track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ - layouts: ["phone", "small-tablet", "tablet", "web"], - onReady: function(track, options, event) { - options.onChange(track, options, event); - }, - - onChange: function(track, options, event) { - track.options.mode = "horizontal"; - track.options.autoHeight = false; - track.options.perPage = 4; - - if (event.layout === "small-tablet") { - track.options.perPage = 3; - if (track.container.hasClass("huge")) { - track.options.autoHeight = true; - } - - } else if (event.layout === "phone") { - track.options.perPage = 3; - track.options.mode = "vertical"; - track.options.autoHeight = true; - } - - track.restart({keepCurrentPage: true}); - } - })); - - track.start(); - - }); - -}); diff --git a/js/example4.js b/js/example4.js deleted file mode 100644 index b45ff70..0000000 --- a/js/example4.js +++ /dev/null @@ -1,80 +0,0 @@ -//================================================= -// Example 4 - remote content -//================================================= - -jQuery(function() { - - var example = $("#example-4"); - var parent = example.parents(".track"); - var track = example.silverTrack(SilverTrackExample.defaults); - - track.install(new SilverTrack.Plugins.Navigator({ - prev: $("a.prev", parent), - next: $("a.next", parent) - })); - - track.install(new SilverTrack.Plugins.BulletNavigator({ - container: $(".bullet-pagination", parent) - })); - - track.install(new SilverTrack.Plugins.RemoteContent({ - url: function(track, page, perPage) { - return SilverTrackExample.urlAjax({page: page, perPage: perPage, totalPages: 5}) - }, - beforeStart: function(track) { - track.container.parent().append($("
", {"class": "loading"})); - }, - beforeSend: function(track) { - $(".loading", track.container.parent()).fadeIn(); - }, - process: function(track, perPage, json) { - var data = json.data; - var array = []; - - for (var i = 0; i < perPage; i++) { - if (data[i] === undefined) { - break; - } - - array.push( - $("
", {"class": "item"}). - append($("", {"src": data[i].img_url})). - append($("

", {"text": data[i].title})) - ); - } - - return array; - }, - - beforeAppend: function(track, items) { - $(".loading", track.container.parent()).hide(); - }, - - updateTotalPages: function(track, json) { - track.updateTotalPages(json.total_pages); - } - })); - - track.install(new SilverTrack.Plugins.ResponsiveHubConnector({ - layouts: ["phone", "small-tablet", "tablet", "web"], - onReady: function(track, options, event) { - options.onChange(track, options, event); - }, - - onChange: function(track, options, event) { - track.options.mode = "horizontal"; - track.options.autoHeight = false; - track.options.perPage = 4; - - if (event.layout === "small-tablet" || event.layout === "phone") { - track.options.mode = "vertical"; - track.options.autoHeight = true; - } - - track.restart({keepCurrentPage: true}); - } - })); - - track.start(); - -}); diff --git a/js/script.js b/js/script.js deleted file mode 100644 index 90d96c7..0000000 --- a/js/script.js +++ /dev/null @@ -1,40 +0,0 @@ -jQuery(function() { - - jQuery.support.cors = true; - - window.SilverTrackExample = { - defaults: {easing: "easeInOutQuad", duration: 600}, - echoServerHost: "http://echo-server.herokuapp.com", - urlAjax: function(opts) { - var json = this.jsonCreator(opts.page, opts.perPage); - return this.urlCreator(json, opts.page, opts.totalPages); - }, - - urlCreator: function(obj, page, totalPages) { - var jsonText = escape(JSON.stringify(obj)); - return this.echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=" + totalPages; - }, - - jsonCreator: function(page, perPage) { - var photoTypes = ["food", "people", "nature", "sports"]; - var items = []; - for (var i = 0; i < perPage; i++) { - items.push({ - img_url: "http://lorempixel.com/224/128/" + photoTypes[i], - title: "Page " + page + " item " + i - }); - } - - return items; - } - } - - $(".slider-container").each(function() { - var example = $(this); - $("a.reload", example.parents(".track")).click(function(e) { - e.preventDefault(); - example.silverTrack().restart(); - }); - }); - -}); diff --git a/stylesheets/base_example.css b/stylesheets/base_example.css new file mode 100644 index 0000000..f69f62d --- /dev/null +++ b/stylesheets/base_example.css @@ -0,0 +1,73 @@ +.view-port { + overflow: hidden; + position: relative; +} + +.view-port, .track .inner { + width: 960px; +} + +.slider-container { + position: relative; + height: 138px; + margin: 0; + padding: 0; +} +.item { + position: absolute; + + width: 234px; + height: 138px; + margin-right: 8px +} + +.track { + position: relative; + background-color: white; + padding: 10px 2px; + border-radius: 3px; + margin-bottom: 20px; +} + +.track a.prev, +.track a.next { + display: block; + position: absolute; + top: 50%; + margin-top: -32px; + width: 64px; + height: 64px; + background: url("../images/arrows.png"); + background-repeat: no-repeat; +} + +.track a.prev.disabled, +.track a.next.disabled { + display: none; +} + +.track a.prev { + left: 0; + background-position: 0 0; +} + +.track a.prev:hover { + background-position: 0 -66px; +} + +.track a.prev:active { + background-position: 0 -132px; +} + +.track a.next { + right: 0; + background-position: -64px 0; +} + +.track a.next:hover { + background-position: -64px -132px; +} + +.track a.next:active { + background-position: -64px -198px; +} diff --git a/stylesheets/pygment_monokai.css b/stylesheets/pygment_monokai.css new file mode 100644 index 0000000..005d477 --- /dev/null +++ b/stylesheets/pygment_monokai.css @@ -0,0 +1,64 @@ +.highlight .hll { background-color: #49483e } +.highlight .c { color: #75715e } /* Comment */ +.highlight .err { color: #960050; background-color: #1e0010 } /* Error */ +.highlight .k { color: #66d9ef } /* Keyword */ +.highlight .l { color: #ae81ff } /* Literal */ +.highlight .n { color: #f8f8f2 } /* Name */ +.highlight .o { color: #f92672 } /* Operator */ +.highlight .p { color: #f8f8f2 } /* Punctuation */ +.highlight .cm { color: #75715e } /* Comment.Multiline */ +.highlight .cp { color: #75715e } /* Comment.Preproc */ +.highlight .c1 { color: #75715e } /* Comment.Single */ +.highlight .cs { color: #75715e } /* Comment.Special */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .kc { color: #66d9ef } /* Keyword.Constant */ +.highlight .kd { color: #66d9ef } /* Keyword.Declaration */ +.highlight .kn { color: #f92672 } /* Keyword.Namespace */ +.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ +.highlight .kr { color: #66d9ef } /* Keyword.Reserved */ +.highlight .kt { color: #66d9ef } /* Keyword.Type */ +.highlight .ld { color: #e6db74 } /* Literal.Date */ +.highlight .m { color: #ae81ff } /* Literal.Number */ +.highlight .s { color: #e6db74 } /* Literal.String */ +.highlight .na { color: #a6e22e } /* Name.Attribute */ +.highlight .nb { color: #f8f8f2 } /* Name.Builtin */ +.highlight .nc { color: #a6e22e } /* Name.Class */ +.highlight .no { color: #66d9ef } /* Name.Constant */ +.highlight .nd { color: #a6e22e } /* Name.Decorator */ +.highlight .ni { color: #f8f8f2 } /* Name.Entity */ +.highlight .ne { color: #a6e22e } /* Name.Exception */ +.highlight .nf { color: #a6e22e } /* Name.Function */ +.highlight .nl { color: #f8f8f2 } /* Name.Label */ +.highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +.highlight .nx { color: #a6e22e } /* Name.Other */ +.highlight .py { color: #f8f8f2 } /* Name.Property */ +.highlight .nt { color: #f92672 } /* Name.Tag */ +.highlight .nv { color: #f8f8f2 } /* Name.Variable */ +.highlight .ow { color: #f92672 } /* Operator.Word */ +.highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +.highlight .mf { color: #ae81ff } /* Literal.Number.Float */ +.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ +.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ +.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ +.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ +.highlight .sc { color: #e6db74 } /* Literal.String.Char */ +.highlight .sd { color: #e6db74 } /* Literal.String.Doc */ +.highlight .s2 { color: #e6db74 } /* Literal.String.Double */ +.highlight .se { color: #ae81ff } /* Literal.String.Escape */ +.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ +.highlight .si { color: #e6db74 } /* Literal.String.Interpol */ +.highlight .sx { color: #e6db74 } /* Literal.String.Other */ +.highlight .sr { color: #e6db74 } /* Literal.String.Regex */ +.highlight .s1 { color: #e6db74 } /* Literal.String.Single */ +.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ +.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ +.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ +.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ +.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ + +.highlight .gh { } /* Generic Heading & Diff Header */ +.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ +.highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ +.highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css deleted file mode 100644 index c6a6452..0000000 --- a/stylesheets/pygment_trac.css +++ /dev/null @@ -1,69 +0,0 @@ -.highlight { background: #ffffff; } -.highlight .c { color: #999988; font-style: italic } /* Comment */ -.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ -.highlight .k { font-weight: bold } /* Keyword */ -.highlight .o { font-weight: bold } /* Operator */ -.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ -.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ -.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #aa0000 } /* Generic.Error */ -.highlight .gh { color: #999999 } /* Generic.Heading */ -.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ -.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ -.highlight .go { color: #888888 } /* Generic.Output */ -.highlight .gp { color: #555555 } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ -.highlight .gt { color: #aa0000 } /* Generic.Traceback */ -.highlight .kc { font-weight: bold } /* Keyword.Constant */ -.highlight .kd { font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ -.highlight .kr { font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ -.highlight .m { color: #009999 } /* Literal.Number */ -.highlight .s { color: #d14 } /* Literal.String */ -.highlight .na { color: #008080 } /* Name.Attribute */ -.highlight .nb { color: #0086B3 } /* Name.Builtin */ -.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ -.highlight .no { color: #008080 } /* Name.Constant */ -.highlight .ni { color: #800080 } /* Name.Entity */ -.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ -.highlight .nn { color: #555555 } /* Name.Namespace */ -.highlight .nt { color: #000080 } /* Name.Tag */ -.highlight .nv { color: #008080 } /* Name.Variable */ -.highlight .ow { font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #009999 } /* Literal.Number.Float */ -.highlight .mh { color: #009999 } /* Literal.Number.Hex */ -.highlight .mi { color: #009999 } /* Literal.Number.Integer */ -.highlight .mo { color: #009999 } /* Literal.Number.Oct */ -.highlight .sb { color: #d14 } /* Literal.String.Backtick */ -.highlight .sc { color: #d14 } /* Literal.String.Char */ -.highlight .sd { color: #d14 } /* Literal.String.Doc */ -.highlight .s2 { color: #d14 } /* Literal.String.Double */ -.highlight .se { color: #d14 } /* Literal.String.Escape */ -.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ -.highlight .si { color: #d14 } /* Literal.String.Interpol */ -.highlight .sx { color: #d14 } /* Literal.String.Other */ -.highlight .sr { color: #009926 } /* Literal.String.Regex */ -.highlight .s1 { color: #d14 } /* Literal.String.Single */ -.highlight .ss { color: #990073 } /* Literal.String.Symbol */ -.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #008080 } /* Name.Variable.Class */ -.highlight .vg { color: #008080 } /* Name.Variable.Global */ -.highlight .vi { color: #008080 } /* Name.Variable.Instance */ -.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ - -.type-csharp .highlight .k { color: #0000FF } -.type-csharp .highlight .kt { color: #0000FF } -.type-csharp .highlight .nf { color: #000000; font-weight: normal } -.type-csharp .highlight .nc { color: #2B91AF } -.type-csharp .highlight .nn { color: #000000 } -.type-csharp .highlight .s { color: #A31515 } -.type-csharp .highlight .sc { color: #A31515 } diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css index 020ad6d..951dccb 100644 --- a/stylesheets/stylesheet.css +++ b/stylesheets/stylesheet.css @@ -1,4 +1,4 @@ -/* http://meyerweb.com/eric/tools/css/reset/ +/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ @@ -11,8 +11,8 @@ b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; @@ -23,7 +23,7 @@ time, mark, audio, video { vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } @@ -49,7 +49,7 @@ table { /* LAYOUT STYLES */ body { font-size: 1em; - line-height: 1.5; + line-height: 1.5; background: #e7e7e7 url(../images/body-bg.png) 0 0 repeat; font-family: 'Helvetica Neue', Helvetica, Arial, serif; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); @@ -90,7 +90,7 @@ header h2 { } .inner { - width: 620px; + width: 960px; margin: 0 auto; } @@ -104,7 +104,7 @@ header h2 { a.button { -moz-border-radius: 30px; - -webkit-border-radius: 30px; + -webkit-border-radius: 30px; border-radius: 30px; border-top: solid 1px #cbcbcb; border-left: solid 1px #b7b7b7; @@ -118,7 +118,7 @@ a.button { display: block; float: left; width: 179px; - margin-right: 14px; + margin-right: 14px; background: #fdfdfd; /* Old browsers */ background: -moz-linear-gradient(top, #fdfdfd 0%, #f2f2f2 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f2f2f2)); /* Chrome,Safari4+ */ @@ -184,6 +184,7 @@ pre { color: #f2f2f2; text-shadow: none; overflow: auto; + border-radius: 3px; } pre code { color: #f2f2f2; @@ -227,14 +228,14 @@ th { td { border: 1px solid #ebebeb; - text-align: center; + text-align: center; font-weight: 300; } form { background: #f2f2f2; padding: 20px; - + } @@ -242,43 +243,43 @@ form { h1 { font-size: 32px; -} +} h2 { font-size: 22px; font-weight: bold; color: #303030; margin-bottom: 8px; -} +} h3 { color: #d5000d; font-size: 18px; font-weight: bold; margin-bottom: 8px; -} - +} + h4 { font-size: 16px; color: #303030; font-weight: bold; -} +} h5 { font-size: 1em; color: #303030; -} +} h6 { font-size: .8em; color: #303030; -} +} p { font-weight: 300; margin-bottom: 20px; } - + a { text-decoration: none; } @@ -309,7 +310,6 @@ dl dt { } footer { - background: transparent url('../images/hr.png') 0 0 no-repeat; margin-top: 40px; padding-top: 20px; padding-bottom: 30px; From f9ea855370f20f0af83816259e928ff0ca7cc3b2 Mon Sep 17 00:00:00 2001 From: tulios Date: Tue, 11 Mar 2014 16:03:09 -0300 Subject: [PATCH 21/34] organizing topics --- _includes/footer.html | 2 + _includes/head.html | 12 +-- _includes/menu.html | 20 ++++ _layouts/main.html | 4 + _posts/advanced/2014-03-11-callbacks.html | 7 ++ .../advanced/2014-03-11-initialization.html | 7 ++ .../how_tos/2014-03-11-creating-a-plugin.html | 7 ++ .../how_tos/2014-03-11-defining-a-recipe.html | 7 ++ .../plugins/2014-03-11-bullet-navigator.html | 7 ++ _posts/plugins/2014-03-11-navigator.html | 7 ++ _posts/plugins/2014-03-11-remote-content.html | 7 ++ .../2014-03-11-responsive-hub-connector.html | 7 ++ _site/advanced/callbacks.html | 99 +++++++++++++++++++ _site/advanced/initialization.html | 99 +++++++++++++++++++ _site/how_tos/creating-a-plugin.html | 99 +++++++++++++++++++ _site/how_tos/defining-a-recipe.html | 99 +++++++++++++++++++ _site/index.html | 44 ++++++++- _site/plugins/bullet-navigator.html | 99 +++++++++++++++++++ _site/plugins/navigator.html | 99 +++++++++++++++++++ _site/plugins/remote-content.html | 99 +++++++++++++++++++ _site/plugins/responsive-hub-connector.html | 99 +++++++++++++++++++ _site/stylesheets/stylesheet.css | 4 + index.html | 8 +- 23 files changed, 930 insertions(+), 12 deletions(-) create mode 100644 _includes/menu.html create mode 100644 _posts/advanced/2014-03-11-callbacks.html create mode 100644 _posts/advanced/2014-03-11-initialization.html create mode 100644 _posts/how_tos/2014-03-11-creating-a-plugin.html create mode 100644 _posts/how_tos/2014-03-11-defining-a-recipe.html create mode 100644 _posts/plugins/2014-03-11-bullet-navigator.html create mode 100644 _posts/plugins/2014-03-11-navigator.html create mode 100644 _posts/plugins/2014-03-11-remote-content.html create mode 100644 _posts/plugins/2014-03-11-responsive-hub-connector.html create mode 100644 _site/advanced/callbacks.html create mode 100644 _site/advanced/initialization.html create mode 100644 _site/how_tos/creating-a-plugin.html create mode 100644 _site/how_tos/defining-a-recipe.html create mode 100644 _site/plugins/bullet-navigator.html create mode 100644 _site/plugins/navigator.html create mode 100644 _site/plugins/remote-content.html create mode 100644 _site/plugins/responsive-hub-connector.html diff --git a/_includes/footer.html b/_includes/footer.html index 9a02e90..0236ba6 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -1,3 +1,5 @@ + {% include menu.html %} +
+{% endhighlight %} + +

+For this examples we will need some support functions. We need to generate a fake json to allow the echo server to return json and we will also need to generate the appropriate url with the json parameter set. This is just necessary to the example, in your code you will point to your service url and won't need any fake json generator. +

+ +{% highlight js %} +// Let's create a function to create the urls for our "echo" test server +var urlToEchoServer = function(track, page, perPage) { + var jsonText = escape(JSON.stringify(fakeJsonCreator(page, perPage))); + var echoServerHost = "http://echo-server.herokuapp.com"; + return echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=5"; +} + +// Support function for our test +var fakeJsonCreator = function(page, perPage) { + var photoTypes = ["food", "people", "nature", "sports"]; + var items = []; + for (var i = 0; i < perPage; i++) { + items.push({img_url: "http://lorempixel.com/224/128/" + photoTypes[i]}); + } + + return items; +} +{% endhighlight %} + +

+Then we will create our processor, the function that will transform the data from the server into an array of DOM elements, and install our plugin +

+ +{% highlight js %} +// Let's create our processor, the function that will transform the data +// from the server into an array of DOM elements +var processor = function(track, perPage, json) { + var array = []; + + for (var i = 0; i < perPage; i++) { + if (json.data[i] === undefined) { + break; + } + + array.push( + $("
", {"class": "item"}).append($("", {"src": json.data[i].img_url})) + ); + } + + return array; +} + +// Then we install the plugin +track.install(new SilverTrack.Plugins.RemoteContent({ + url: urlToEchoServer, + process: processor, + + beforeStart: function(track) { + track.container.parent().append($("
", {"class": "loading"})); + }, + + beforeSend: function(track) { + $(".loading", track.container.parent()).fadeIn(); + }, + + beforeAppend: function(track, items) { + $(".loading", track.container.parent()).hide(); + }, + + updateTotalPages: function(track, json) { + track.updateTotalPages(json.total_pages); + } +})); +{% endhighlight %} +

-TODO: write! +and it's done!

+ +
+
+
+
+
+ + +
diff --git a/_site/javascripts/plugin_remote_content_example.js b/_site/javascripts/plugin_remote_content_example.js new file mode 100644 index 0000000..9012a5c --- /dev/null +++ b/_site/javascripts/plugin_remote_content_example.js @@ -0,0 +1,80 @@ +$(function() { + // ========================================================================= + // Our support functions, just for the example + // ========================================================================= + + // Let's create a function to create the urls for our "echo" test server + var urlToEchoServer = function(track, page, perPage) { + var jsonText = escape(JSON.stringify(fakeJsonCreator(page, perPage))); + var echoServerHost = "http://echo-server.herokuapp.com"; + return echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=5"; + } + + // Support function for our test + var fakeJsonCreator = function(page, perPage) { + var photoTypes = ["food", "people", "nature", "sports"]; + var items = []; + for (var i = 0; i < perPage; i++) { + items.push({img_url: "http://lorempixel.com/224/128/" + photoTypes[i]}); + } + + return items; + } + + // ========================================================================= + // Track creation and plugin configuration + // ========================================================================= + + var container = $(".track:first"); + var track = container.find(".slider-container").silverTrack({ + easing: "easeInOutQuad", + duration: 600 + }); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + // Let's create our processor, the function that will transform the data + // from the server into an array of DOM elements + var processor = function(track, perPage, json) { + var array = []; + + for (var i = 0; i < perPage; i++) { + if (json.data[i] === undefined) { + break; + } + + array.push( + $("
", {"class": "item"}).append($("", {"src": json.data[i].img_url})) + ); + } + + return array; + } + + // Then we install the plugin + track.install(new SilverTrack.Plugins.RemoteContent({ + url: urlToEchoServer, + process: processor, + + beforeStart: function(track) { + track.container.parent().append($("
", {"class": "loading"})); + }, + + beforeSend: function(track) { + $(".loading", track.container.parent()).fadeIn(); + }, + + beforeAppend: function(track, items) { + $(".loading", track.container.parent()).hide(); + }, + + updateTotalPages: function(track, json) { + track.updateTotalPages(json.total_pages); + } + })); + + track.start(); +}); diff --git a/_site/plugins/remote-content.html b/_site/plugins/remote-content.html index 98f9d67..10651e7 100644 --- a/_site/plugins/remote-content.html +++ b/_site/plugins/remote-content.html @@ -50,10 +50,197 @@

-

-TODO: write! + + +

+This plugin provides a way to load content through ajax. Example in the end of the page. +

+ +

+ Options +

+ + + + + + + + + + + + + + + + + + + + + + + + +
name + description + default +
lazyIt determines if RemoteContent will fetch the first page after the track starts or just when the user navigate to a page without cache. You will usually set this to false when you render your first page with the track and get the other items through ajaxtrue
typeThe type of request to make ("POST" or "GET"). This parameter is sent direct to jQuery.ajax functionGET
paramsData to be sent to the server. This parameter is sent to option "data" of jQuery.ajax function{}
urlA string containing the URL to which the request is sent or a function that returns an url. If this option is a function, it will receive a reference of track, the page number and the perPage value, if not RemoteContent will try to replace the substrings {page} and {perPage} with the current values
+ +

+ Callbacks +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name + description + arguments +
beforeStartCalled before the track startstrack
beforeSendIt is a pre-request callback, it could be used to include spinners/loaders and do whatever you want before the requesttrack, jqXHR, settings
beforeAppendContainer to append the navigation linkstrack
afterAppendCalled before items are attached to the DOMtrack
processIt is a function that will process the data loaded by the server and return an array of DOM items that will be appended to the DOMtrack, perPage, data
updateTotalPagesIt will be called after the afterAppend callback to update the total pages of the track based on the data loaded by the servertrack, data
onErrorCalled whenever an error happens with the requesttrack, jqXHR, textStatus, errorThrown
+ +

+For our example, we will use a server called "echo" that responds with the same JSON that we set through the parameter json, it will also return the total pages number that we set with the parameter total_pages. +

+ +

+Because we are lazy people we will use the lazy option true, that is already set by default, thus the markup will be like: +

+ +
<div class="track">
+  <div class="view-port">
+    <div class="slider-container">
+      <!-- no items, lazy developers! -->
+    </div>
+  </div>
+
+  <div class="pagination">
+    <a href="#" class="prev disabled"></a>
+    <a href="#" class="next disabled"></a>
+  </div>
+</div>
+
+ +

+For this examples we will need some support functions. We need to generate a fake json to allow the echo server to return json and we will also need to generate the appropriate url with the json parameter set. This is just necessary to the example, in your code you will point to your service url and won't need any fake json generator. +

+ +
// Let's create a function to create the urls for our "echo" test server
+var urlToEchoServer = function(track, page, perPage) {
+  var jsonText = escape(JSON.stringify(fakeJsonCreator(page, perPage)));
+  var echoServerHost = "http://echo-server.herokuapp.com";
+  return echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=5";
+}
+
+// Support function for our test
+var fakeJsonCreator = function(page, perPage) {
+  var photoTypes = ["food", "people", "nature", "sports"];
+  var items = [];
+  for (var i = 0; i < perPage; i++) {
+    items.push({img_url: "http://lorempixel.com/224/128/" + photoTypes[i]});
+  }
+
+  return items;
+}
+
+ +

+Then we will create our processor, the function that will transform the data from the server into an array of DOM elements, and install our plugin +

+ +
// Let's create our processor, the function that will transform the data
+// from the server into an array of DOM elements
+var processor = function(track, perPage, json) {
+  var array = [];
+
+  for (var i = 0; i < perPage; i++) {
+    if (json.data[i] === undefined) {
+      break;
+    }
+
+    array.push(
+      $("<div></div>", {"class": "item"}).append($("<img>", {"src": json.data[i].img_url}))
+    );
+  }
+
+  return array;
+}
+
+// Then we install the plugin
+track.install(new SilverTrack.Plugins.RemoteContent({
+  url: urlToEchoServer,
+  process: processor,
+
+  beforeStart: function(track) {
+    track.container.parent().append($("<div></div>", {"class": "loading"}));
+  },
+
+  beforeSend: function(track) {
+    $(".loading", track.container.parent()).fadeIn();
+  },
+
+  beforeAppend: function(track, items) {
+    $(".loading", track.container.parent()).hide();
+  },
+
+  updateTotalPages: function(track, json) {
+    track.updateTotalPages(json.total_pages);
+  }
+}));
+
+ +

+and it's done!

+
+
+
+
+
+ + +
+
diff --git a/_site/how_tos/defining-a-recipe.html b/_site/how_tos/defining-a-recipe.html index 67e2237..571a6a5 100644 --- a/_site/how_tos/defining-a-recipe.html +++ b/_site/how_tos/defining-a-recipe.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Defining a recipe - jQuery.silver_track @@ -270,6 +271,8 @@

Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/index.html b/_site/index.html index f1d96cf..c4937db 100644 --- a/_site/index.html +++ b/_site/index.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + jQuery.silver_track @@ -189,6 +190,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/javascripts/libs/modernizr.mediaqueries.transform3d.js b/_site/javascripts/libs/modernizr.mediaqueries.transform3d.js new file mode 100644 index 0000000..314c589 --- /dev/null +++ b/_site/javascripts/libs/modernizr.mediaqueries.transform3d.js @@ -0,0 +1,4 @@ +/* Modernizr 2.7.1 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-csstransforms3d-mq-teststyles-testprop-testallprops-prefixes-domprefixes + */ +;window.Modernizr=function(a,b,c){function z(a){i.cssText=a}function A(a,b){return z(l.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&i[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+n.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.7.1",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l=" -webkit- -moz- -o- -ms- ".split(" "),m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={},q={},r={},s=[],t=s.slice,u,v=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},w=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return v("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=t.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(t.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(t.call(arguments)))};return e}),p.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in f.style&&v("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a};for(var G in p)y(p,G)&&(u=G.toLowerCase(),e[u]=p[G](),s.push((e[u]?"":"no-")+u));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),h=j=null,e._version=d,e._prefixes=l,e._domPrefixes=o,e._cssomPrefixes=n,e.mq=w,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=v,e}(this,this.document); diff --git a/_site/javascripts/libs/modernizr_mediaqueries.js b/_site/javascripts/libs/modernizr_mediaqueries.js deleted file mode 100644 index 1e075b8..0000000 --- a/_site/javascripts/libs/modernizr_mediaqueries.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-mq-teststyles - */ -;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var A in l)u(l,A)&&(q=A.toLowerCase(),e[q]=l[A](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document); diff --git a/_site/javascripts/plugin/jquery.silver_track.js b/_site/javascripts/plugin/jquery.silver_track.js index 02b65fb..e542858 100644 --- a/_site/javascripts/plugin/jquery.silver_track.js +++ b/_site/javascripts/plugin/jquery.silver_track.js @@ -1,7 +1,7 @@ /*! * jQuery SilverTrack * https://github.com/tulios/jquery.silver_track - * version: 0.2.2 + * version: 0.3.0 */ (function ($, window, document) { @@ -28,7 +28,13 @@ autoHeight: false, cover: false, duration: "slow", - easing: "swing" + easing: "swing", + /* + * Args: movement, duration, easing, afterCallback + * - easing and afterCallback may be optional + * - movement will be {left: someValue} or {height: someValue} + */ + animateFunction: null }; var SilverTrack = function (container, options) { @@ -46,7 +52,10 @@ SilverTrack.prototype = { start: function() { - this._validateAnimationEasing(); + if (this.options.animateFunction === null) { + this._validateAnimationEasing(); + } + this._executeAll("beforeStart"); this._init(); this._executeAll("afterStart"); @@ -81,7 +90,7 @@ this._executeAll("beforePagination", [event]); this.paginationEnabled = false; - this._animate(shift, event, duration); + this._slide(shift, event, duration); this._adjustHeight(items, duration); } }, @@ -174,14 +183,16 @@ return true; }, - _animate: function(shift, event, duration) { + _slide: function(shift, event, duration) { var self = this; - - this._executeAll("beforeAnimation", [event]); - this.container.animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { + var movement = {"left": "-" + shift + "px"}; + var afterCallback = function() { self.paginationEnabled = true; self._executeAll("afterAnimation", [event]); - }); + } + + this._executeAll("beforeAnimation", [event]); + this._animate(movement, duration, afterCallback) }, _adjustHeight: function(items, duration) { @@ -199,11 +210,21 @@ var event = {items: items, newHeight: newHeight}; this._executeAll("beforeAdjustHeight", [event]); - this.container.animate({"height": newHeight + "px"}, duration); + this._animate({"height": newHeight + "px"}, duration); this._executeAll("afterAdjustHeight", [event]); } }, + _animate: function(movement, duration, afterCallback) { + var easing = this.options.easing; + if (this.options.animateFunction !== null) { + this.options.animateFunction(movement, duration, easing, afterCallback); + + } else { + this.container.animate(movement, duration, easing, afterCallback); + } + }, + _positionElements: function() { this.container.css({"left": "0px"}); this.itemWidth = this._calculateItemWidth(); diff --git a/_site/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js b/_site/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js new file mode 100644 index 0000000..a158633 --- /dev/null +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js @@ -0,0 +1,205 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + * + * CSS3 Animation + * version: 0.1.0 + * + * This plugin depends on modernizr.transforms3d.js + */ + +(function($, window, document) { + + var BrowserPrefixes = ["webkit", "moz", "o", "ms"]; + + $.silverTrackPlugin("Css3Animation", { + defaults: { + durationUnit: "ms", + delayUnit: null, + + setupParent: true, + setupTransitionProperty: true, + setupTransitionDuration: true, + setupTransitionTimingFunction: true, + setupTransitionDelay: true, + + slideDelay: 0, + autoHeightDuration: null, + autoHeightEasing: null, + autoHeightDelay: null + }, + + initialize: function(options) { + this.options = options; + this.fallback = !Modernizr.csstransforms3d; + }, + + onInstall: function(track) { + this.track = track + if (!this.fallback) { + var self = this; + this.track.options.animateFunction = function(movement, duration, easing, afterCallback) { + self.cssAnimate(movement, duration, easing, afterCallback); + } + } + }, + + beforeStart: function() { + this._setupTransition(); + }, + + afterRestart: function() { + this._setupTransition(); + }, + + cssAnimate: function(movement, duration, easing, afterCallback) { + var timeout = 0; + var element = this.track.container; + var transitionEndEvent = this._getTransitionEndEvent(); + var animationEnded = function() { + if (afterCallback !== null && afterCallback !== undefined) { + afterCallback(); + } + } + + element.one(transitionEndEvent, function(){ + animationEnded(); + clearTimeout(timeout); + }); + + if (!!movement.left) { + this._applyTransform3d(element, movement); + + } else { + element.css(movement); + } + + timeout = setTimeout(function() { animationEnded() }, duration); + }, + + _setupTransition: function() { + var autoHeight = this.track.options.autoHeight; + var element = this.track.container; + var values; + + // enabling hardware acceleration into the parent + if (this.options.setupParent) { + this._applyTransform3d(element.parent(), {left: 0}); + } + + // pre configuring container + if (this.options.setupTransitionProperty) { + element.css(this._toCompatibleVersion("transition-property", "transform", function(prefix, value) { + var transform = "-" + prefix + "-" + value; + return autoHeight ? transform + ", height" : transform; + })); + } + + if (this.options.setupTransitionDuration) { + var duration = this._toDuration(this.track.options.duration); + var autoHeightDuration = this._toDuration(this.options.autoHeightDuration || this.track.options.duration); + values = autoHeight ? [duration, autoHeightDuration] : [duration]; + element.css(this._toCompatibleVersion("transition-duration", values.join(", "))); + } + + if (this.options.setupTransitionTimingFunction) { + var easing = this._easingFunctionToCubicBezier(this.track.options.easing); + var autoHeightEasing = this._easingFunctionToCubicBezier(this.options.autoHeightEasing || this.track.options.easing); + values = autoHeight ? [easing, autoHeightEasing] : [easing]; + element.css(this._toCompatibleVersion("transition-timing-function", values.join(", "))); + } + + if (this.options.setupTransitionDelay) { + var delay = this._toDelay(this.options.slideDelay); + var autoHeightDelay = this._toDelay(this.options.autoHeightDelay || this.options.slideDelay); + values = autoHeight ? [delay, autoHeightDelay] : [delay]; + element.css(this._toCompatibleVersion("transition-delay", values.join(", "))); + } + }, + + _applyTransform3d: function(element, movement) { + element.css(this._toCompatibleVersion("transform", "translate3d(" + movement.left + ", 0px, 0px)")); + }, + + _toDuration: function(number) { + return number + this.options.durationUnit; + }, + + _toDelay: function(number) { + return number + (this.options.delayUnit || this.options.durationUnit); + }, + + _toCompatibleVersion: function(name, value, eachCallback) { + var output = {}; + $.each(BrowserPrefixes, function() { + var str = !!eachCallback ? eachCallback(this, value) : value; + output["-" + this + "-" + name] = str; + }); + + output[name] = value; + return output; + }, + + _easingFunctionToCubicBezier: function(easing) { + return SilverTrack.Plugins.Css3Animation.CubicBezierMap[easing] || CubicBezierMap["ease"]; + }, + + _getTransitionEndEvent: function(){ + var transitions = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + }; + + for(var t in transitions){ + if(this.track.container.get(0).style[t] !== undefined){ + return transitions[t]; + } + } + } + + }); + + SilverTrack.Plugins.Css3Animation.CubicBezierMap = { + "linear": "cubic-bezier(0.25, 0.25, 0.75, 0.75)", + "ease": "cubic-bezier(0.25, 0.1, 0.25, 1)", + "swing": "cubic-bezier(0.25, 0.1, 0.25, 1)", // compatibility + + "ease-in": "cubic-bezier(0.42, 0, 1, 1)", + "easeIn": "cubic-bezier(0.42, 0, 1, 1)", + + "ease-out": "cubic-bezier(0, 0, 0.58, 1)", + "easeOut": "cubic-bezier(0, 0, 0.58, 1)", + + "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1)", + "easeInOut": "cubic-bezier(0.42, 0, 0.58, 1)", + + "easeInQuad": "cubic-bezier(0.55, 0.085, 0.68, 0.53)", + "easeInCubic": "cubic-bezier(0.55, 0.055, 0.675, 0.19)", + "easeInQuart": "cubic-bezier(0.895, 0.03, 0.685, 0.22)", + "easeInQuint": "cubic-bezier(0.755, 0.05, 0.855, 0.06)", + "easeInSine": "cubic-bezier(0.47, 0, 0.745, 0.715)", + "easeInExpo": "cubic-bezier(0.95, 0.05, 0.795, 0.035)", + "easeInCirc": "cubic-bezier(0.6, 0.04, 0.98, 0.335)", + "easeInBack": "cubic-bezier(0.6, -0.28, 0.735, 0.045)", + "easeOutQuad": "cubic-bezier(0.25, 0.46, 0.45, 0.94)", + "easeOutCubic": "cubic-bezier(0.215, 0.61, 0.355, 1)", + "easeOutQuart": "cubic-bezier(0.165, 0.84, 0.44, 1)", + "easeOutQuint": "cubic-bezier(0.23, 1, 0.32, 1)", + "easeOutSine": "cubic-bezier(0.39, 0.575, 0.565, 1)", + "easeOutExpo": "cubic-bezier(0.19, 1, 0.22, 1)", + "easeOutCirc": "cubic-bezier(0.075, 0.82, 0.165, 1)", + "easeOutBack": "cubic-bezier(0.175, 0.885, 0.32, 1.275)", + "easeInOutQuad": "cubic-bezier(0.455, 0.03, 0.515, 0.955)", + "easeInOutCubic": "cubic-bezier(0.645, 0.045, 0.355, 1)", + "easeInOutQuart": "cubic-bezier(0.77, 0, 0.175, 1)", + "easeInOutQuint": "cubic-bezier(0.86, 0, 0.07, 1)", + "easeInOutSine": "cubic-bezier(0.445, 0.05, 0.55, 0.95)", + "easeInOutExpo": "cubic-bezier(1, 0, 0, 1)", + "easeInOutCirc": "cubic-bezier(0.785, 0.135, 0.15, 0.86)", + "easeInOutBack": "cubic-bezier(0.68, -0.55, 0.265, 1.55)" + } + +})(jQuery, window, document); diff --git a/_site/javascripts/plugin_css3_animation_example.js b/_site/javascripts/plugin_css3_animation_example.js new file mode 100644 index 0000000..325c147 --- /dev/null +++ b/_site/javascripts/plugin_css3_animation_example.js @@ -0,0 +1,13 @@ +$(function() { + var container = $(".track:first"); + var track = container.find(".slider-container").silverTrack(); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.install(new SilverTrack.Plugins.Css3Animation()); + + track.start(); +}); diff --git a/_site/plugins/bullet-navigator.html b/_site/plugins/bullet-navigator.html index 4dd8a69..f54bf75 100644 --- a/_site/plugins/bullet-navigator.html +++ b/_site/plugins/bullet-navigator.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Bullet Navigator - jQuery.silver_track @@ -140,6 +141,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/plugins/css3-animation.html b/_site/plugins/css3-animation.html new file mode 100644 index 0000000..ae80dcd --- /dev/null +++ b/_site/plugins/css3-animation.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Css3 Animation - jQuery.silver_track + + + +
    +
    + +
    +

    jQuery.silver_track

    +

    A smart and very extensible jquery sliding carousel

    +
    + +
    + Download .zip + Download .tar.gz + View on GitHub +
    + + +

    + Css3 Animation +

    + +
    + + +

    +This plugin replaces the animation function of SilverTrack to work with css3 transtions, it will provide an stunning amount of performance for mobile devices and even desktop browsers. Note that due the way css3 animations work the option restart({animate: false}) of SilverTrack will not work. It will automatically fallback to javascript animations if transitions are not available in the browser. +

    + +

    +This plugin requires Moderniz.transform3d. You will find just this feature in the lib directory of SilverTrack repository but you could use your own Modernizr files. +

    + +

    + Options +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    name + description + default +
    durationUnitThe unit used for the animations. The possible values are: ms and sms
    delayUnitThe unit used for the delay property. It automatically fallback to durationUnit if not setnull
    setupParentConfigure the css3 properties to allow hardware acceleration in the parent of the container. It might also be done directly through the css file, so this option could be disabledtrue
    setupTransitionPropertyConfigure the css3 transition-property to the container. It might also be done directly through the css file, so this option could be disabledtrue
    setupTransitionDurationConfigure the css3 transition-duration to the container. It might also be done directly through the css file, so this option could be disabledtrue
    setupTransitionTimingFunctionConfigure the css3 transition-timing-function to the container, it already converts the easing names (easeInOutQuart, easeInCubic, etc) to proper cubic-bezier functions. It might also be done directly through the css file, so this option could be disabledtrue
    setupTransitionDelayConfigure the css3 transition-delay to the container. It might also be done directly through the css file, so this option could be disabledtrue
    slideDelayThe delay used between the transitions, note that delay it is not the same as the duration, this is the time that the browser will wait before the animation starts. It might also be done directly through the css file, if it is the case the option setupTransitionDuration should be disabled0
    autoHeightDurationThis option configures the duration of the height adjustment animation if the property autoHeight of track is set to true. It might also be done directly through the css file but be aware that this option is correctly configured with the duration of the slide animation, make sure that both will work. It automatically fallback to the option duration of the tracknull
    autoHeightEasingThis option configures the easing function of the height adjustment animation if the property autoHeight of the track is set to true. It might also be done directly through the css file but be aware that this option convert the easing name (easeInOutQuart, easeInCubic, etc) to the proper cubic-bezier function and is configured with the easing function of the slide animation, make sure that both will work. It automatically fallback to the option easing of the tracknull
    autoHeightDelayThis option configures the delay of the height adjustment animation if the property autoHeight of the track is set to true. It might also be done directly through the css file but be aware that this option is correctly configured with the delay of the slide animation, make sure that both will work. It automatically fallback to the option slideDelaynull
    + +

    + Installation +

    + +
    track.install(new SilverTrack.Plugins.Css3Animation());
    +
    + +
    + + + + + + +
    +
    + + + diff --git a/_site/plugins/navigator.html b/_site/plugins/navigator.html index 56da0af..bf04a7e 100644 --- a/_site/plugins/navigator.html +++ b/_site/plugins/navigator.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Navigator - jQuery.silver_track @@ -144,6 +145,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/plugins/remote-content.html b/_site/plugins/remote-content.html index 10651e7..dc9982c 100644 --- a/_site/plugins/remote-content.html +++ b/_site/plugins/remote-content.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Remote Content - jQuery.silver_track @@ -270,6 +271,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/plugins/responsive-hub-connector.html b/_site/plugins/responsive-hub-connector.html index 8d012a3..b00efb6 100644 --- a/_site/plugins/responsive-hub-connector.html +++ b/_site/plugins/responsive-hub-connector.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + ResponsiveHub Connector - jQuery.silver_track @@ -83,6 +84,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/root/methods.html b/_site/root/methods.html index 4123626..7cbd0ad 100644 --- a/_site/root/methods.html +++ b/_site/root/methods.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Methods - jQuery.silver_track @@ -202,6 +203,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/_site/root/options.html b/_site/root/options.html index 2ba37a5..1d3d8d5 100644 --- a/_site/root/options.html +++ b/_site/root/options.html @@ -17,7 +17,7 @@ - + @@ -25,6 +25,7 @@ + Options - jQuery.silver_track @@ -209,6 +210,8 @@

    Built-in Plugins:

  • ResponsiveHub Connector
  • +
  • Css3 Animation
  • + diff --git a/javascripts/libs/modernizr.mediaqueries.transform3d.js b/javascripts/libs/modernizr.mediaqueries.transform3d.js new file mode 100644 index 0000000..314c589 --- /dev/null +++ b/javascripts/libs/modernizr.mediaqueries.transform3d.js @@ -0,0 +1,4 @@ +/* Modernizr 2.7.1 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-csstransforms3d-mq-teststyles-testprop-testallprops-prefixes-domprefixes + */ +;window.Modernizr=function(a,b,c){function z(a){i.cssText=a}function A(a,b){return z(l.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&i[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+n.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+o.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.7.1",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l=" -webkit- -moz- -o- -ms- ".split(" "),m="Webkit Moz O ms",n=m.split(" "),o=m.toLowerCase().split(" "),p={},q={},r={},s=[],t=s.slice,u,v=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},w=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return v("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=t.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(t.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(t.call(arguments)))};return e}),p.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in f.style&&v("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a};for(var G in p)y(p,G)&&(u=G.toLowerCase(),e[u]=p[G](),s.push((e[u]?"":"no-")+u));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),h=j=null,e._version=d,e._prefixes=l,e._domPrefixes=o,e._cssomPrefixes=n,e.mq=w,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=v,e}(this,this.document); diff --git a/javascripts/libs/modernizr_mediaqueries.js b/javascripts/libs/modernizr_mediaqueries.js deleted file mode 100644 index 1e075b8..0000000 --- a/javascripts/libs/modernizr_mediaqueries.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-mq-teststyles - */ -;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var A in l)u(l,A)&&(q=A.toLowerCase(),e[q]=l[A](),o.push((e[q]?"":"no-")+q));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document); diff --git a/javascripts/plugin/jquery.silver_track.js b/javascripts/plugin/jquery.silver_track.js index 02b65fb..e542858 100644 --- a/javascripts/plugin/jquery.silver_track.js +++ b/javascripts/plugin/jquery.silver_track.js @@ -1,7 +1,7 @@ /*! * jQuery SilverTrack * https://github.com/tulios/jquery.silver_track - * version: 0.2.2 + * version: 0.3.0 */ (function ($, window, document) { @@ -28,7 +28,13 @@ autoHeight: false, cover: false, duration: "slow", - easing: "swing" + easing: "swing", + /* + * Args: movement, duration, easing, afterCallback + * - easing and afterCallback may be optional + * - movement will be {left: someValue} or {height: someValue} + */ + animateFunction: null }; var SilverTrack = function (container, options) { @@ -46,7 +52,10 @@ SilverTrack.prototype = { start: function() { - this._validateAnimationEasing(); + if (this.options.animateFunction === null) { + this._validateAnimationEasing(); + } + this._executeAll("beforeStart"); this._init(); this._executeAll("afterStart"); @@ -81,7 +90,7 @@ this._executeAll("beforePagination", [event]); this.paginationEnabled = false; - this._animate(shift, event, duration); + this._slide(shift, event, duration); this._adjustHeight(items, duration); } }, @@ -174,14 +183,16 @@ return true; }, - _animate: function(shift, event, duration) { + _slide: function(shift, event, duration) { var self = this; - - this._executeAll("beforeAnimation", [event]); - this.container.animate({"left": "-" + shift + "px"}, duration, this.options.easing, function() { + var movement = {"left": "-" + shift + "px"}; + var afterCallback = function() { self.paginationEnabled = true; self._executeAll("afterAnimation", [event]); - }); + } + + this._executeAll("beforeAnimation", [event]); + this._animate(movement, duration, afterCallback) }, _adjustHeight: function(items, duration) { @@ -199,11 +210,21 @@ var event = {items: items, newHeight: newHeight}; this._executeAll("beforeAdjustHeight", [event]); - this.container.animate({"height": newHeight + "px"}, duration); + this._animate({"height": newHeight + "px"}, duration); this._executeAll("afterAdjustHeight", [event]); } }, + _animate: function(movement, duration, afterCallback) { + var easing = this.options.easing; + if (this.options.animateFunction !== null) { + this.options.animateFunction(movement, duration, easing, afterCallback); + + } else { + this.container.animate(movement, duration, easing, afterCallback); + } + }, + _positionElements: function() { this.container.css({"left": "0px"}); this.itemWidth = this._calculateItemWidth(); diff --git a/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js b/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js new file mode 100644 index 0000000..a158633 --- /dev/null +++ b/javascripts/plugin/plugins/jquery.silver_track.css3_animation.js @@ -0,0 +1,205 @@ +/*! + * jQuery SilverTrack + * https://github.com/tulios/jquery.silver_track + * version: 0.2.2 + * + * CSS3 Animation + * version: 0.1.0 + * + * This plugin depends on modernizr.transforms3d.js + */ + +(function($, window, document) { + + var BrowserPrefixes = ["webkit", "moz", "o", "ms"]; + + $.silverTrackPlugin("Css3Animation", { + defaults: { + durationUnit: "ms", + delayUnit: null, + + setupParent: true, + setupTransitionProperty: true, + setupTransitionDuration: true, + setupTransitionTimingFunction: true, + setupTransitionDelay: true, + + slideDelay: 0, + autoHeightDuration: null, + autoHeightEasing: null, + autoHeightDelay: null + }, + + initialize: function(options) { + this.options = options; + this.fallback = !Modernizr.csstransforms3d; + }, + + onInstall: function(track) { + this.track = track + if (!this.fallback) { + var self = this; + this.track.options.animateFunction = function(movement, duration, easing, afterCallback) { + self.cssAnimate(movement, duration, easing, afterCallback); + } + } + }, + + beforeStart: function() { + this._setupTransition(); + }, + + afterRestart: function() { + this._setupTransition(); + }, + + cssAnimate: function(movement, duration, easing, afterCallback) { + var timeout = 0; + var element = this.track.container; + var transitionEndEvent = this._getTransitionEndEvent(); + var animationEnded = function() { + if (afterCallback !== null && afterCallback !== undefined) { + afterCallback(); + } + } + + element.one(transitionEndEvent, function(){ + animationEnded(); + clearTimeout(timeout); + }); + + if (!!movement.left) { + this._applyTransform3d(element, movement); + + } else { + element.css(movement); + } + + timeout = setTimeout(function() { animationEnded() }, duration); + }, + + _setupTransition: function() { + var autoHeight = this.track.options.autoHeight; + var element = this.track.container; + var values; + + // enabling hardware acceleration into the parent + if (this.options.setupParent) { + this._applyTransform3d(element.parent(), {left: 0}); + } + + // pre configuring container + if (this.options.setupTransitionProperty) { + element.css(this._toCompatibleVersion("transition-property", "transform", function(prefix, value) { + var transform = "-" + prefix + "-" + value; + return autoHeight ? transform + ", height" : transform; + })); + } + + if (this.options.setupTransitionDuration) { + var duration = this._toDuration(this.track.options.duration); + var autoHeightDuration = this._toDuration(this.options.autoHeightDuration || this.track.options.duration); + values = autoHeight ? [duration, autoHeightDuration] : [duration]; + element.css(this._toCompatibleVersion("transition-duration", values.join(", "))); + } + + if (this.options.setupTransitionTimingFunction) { + var easing = this._easingFunctionToCubicBezier(this.track.options.easing); + var autoHeightEasing = this._easingFunctionToCubicBezier(this.options.autoHeightEasing || this.track.options.easing); + values = autoHeight ? [easing, autoHeightEasing] : [easing]; + element.css(this._toCompatibleVersion("transition-timing-function", values.join(", "))); + } + + if (this.options.setupTransitionDelay) { + var delay = this._toDelay(this.options.slideDelay); + var autoHeightDelay = this._toDelay(this.options.autoHeightDelay || this.options.slideDelay); + values = autoHeight ? [delay, autoHeightDelay] : [delay]; + element.css(this._toCompatibleVersion("transition-delay", values.join(", "))); + } + }, + + _applyTransform3d: function(element, movement) { + element.css(this._toCompatibleVersion("transform", "translate3d(" + movement.left + ", 0px, 0px)")); + }, + + _toDuration: function(number) { + return number + this.options.durationUnit; + }, + + _toDelay: function(number) { + return number + (this.options.delayUnit || this.options.durationUnit); + }, + + _toCompatibleVersion: function(name, value, eachCallback) { + var output = {}; + $.each(BrowserPrefixes, function() { + var str = !!eachCallback ? eachCallback(this, value) : value; + output["-" + this + "-" + name] = str; + }); + + output[name] = value; + return output; + }, + + _easingFunctionToCubicBezier: function(easing) { + return SilverTrack.Plugins.Css3Animation.CubicBezierMap[easing] || CubicBezierMap["ease"]; + }, + + _getTransitionEndEvent: function(){ + var transitions = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + }; + + for(var t in transitions){ + if(this.track.container.get(0).style[t] !== undefined){ + return transitions[t]; + } + } + } + + }); + + SilverTrack.Plugins.Css3Animation.CubicBezierMap = { + "linear": "cubic-bezier(0.25, 0.25, 0.75, 0.75)", + "ease": "cubic-bezier(0.25, 0.1, 0.25, 1)", + "swing": "cubic-bezier(0.25, 0.1, 0.25, 1)", // compatibility + + "ease-in": "cubic-bezier(0.42, 0, 1, 1)", + "easeIn": "cubic-bezier(0.42, 0, 1, 1)", + + "ease-out": "cubic-bezier(0, 0, 0.58, 1)", + "easeOut": "cubic-bezier(0, 0, 0.58, 1)", + + "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1)", + "easeInOut": "cubic-bezier(0.42, 0, 0.58, 1)", + + "easeInQuad": "cubic-bezier(0.55, 0.085, 0.68, 0.53)", + "easeInCubic": "cubic-bezier(0.55, 0.055, 0.675, 0.19)", + "easeInQuart": "cubic-bezier(0.895, 0.03, 0.685, 0.22)", + "easeInQuint": "cubic-bezier(0.755, 0.05, 0.855, 0.06)", + "easeInSine": "cubic-bezier(0.47, 0, 0.745, 0.715)", + "easeInExpo": "cubic-bezier(0.95, 0.05, 0.795, 0.035)", + "easeInCirc": "cubic-bezier(0.6, 0.04, 0.98, 0.335)", + "easeInBack": "cubic-bezier(0.6, -0.28, 0.735, 0.045)", + "easeOutQuad": "cubic-bezier(0.25, 0.46, 0.45, 0.94)", + "easeOutCubic": "cubic-bezier(0.215, 0.61, 0.355, 1)", + "easeOutQuart": "cubic-bezier(0.165, 0.84, 0.44, 1)", + "easeOutQuint": "cubic-bezier(0.23, 1, 0.32, 1)", + "easeOutSine": "cubic-bezier(0.39, 0.575, 0.565, 1)", + "easeOutExpo": "cubic-bezier(0.19, 1, 0.22, 1)", + "easeOutCirc": "cubic-bezier(0.075, 0.82, 0.165, 1)", + "easeOutBack": "cubic-bezier(0.175, 0.885, 0.32, 1.275)", + "easeInOutQuad": "cubic-bezier(0.455, 0.03, 0.515, 0.955)", + "easeInOutCubic": "cubic-bezier(0.645, 0.045, 0.355, 1)", + "easeInOutQuart": "cubic-bezier(0.77, 0, 0.175, 1)", + "easeInOutQuint": "cubic-bezier(0.86, 0, 0.07, 1)", + "easeInOutSine": "cubic-bezier(0.445, 0.05, 0.55, 0.95)", + "easeInOutExpo": "cubic-bezier(1, 0, 0, 1)", + "easeInOutCirc": "cubic-bezier(0.785, 0.135, 0.15, 0.86)", + "easeInOutBack": "cubic-bezier(0.68, -0.55, 0.265, 1.55)" + } + +})(jQuery, window, document); diff --git a/javascripts/plugin_css3_animation_example.js b/javascripts/plugin_css3_animation_example.js new file mode 100644 index 0000000..325c147 --- /dev/null +++ b/javascripts/plugin_css3_animation_example.js @@ -0,0 +1,13 @@ +$(function() { + var container = $(".track:first"); + var track = container.find(".slider-container").silverTrack(); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.install(new SilverTrack.Plugins.Css3Animation()); + + track.start(); +}); From c21bf852239668d2f0745a074f69c708c1a39305 Mon Sep 17 00:00:00 2001 From: tulios Date: Tue, 25 Mar 2014 22:33:47 -0300 Subject: [PATCH 30/34] examples for css3 animation plugin --- _posts/plugins/2014-03-25-css3-animation.html | 83 +++++++++++++++++++ .../plugin_css3_animation_example.js | 50 ++++++++++- _site/plugins/css3-animation.html | 82 ++++++++++++++++++ _site/stylesheets/base_example.css | 10 ++- javascripts/plugin_css3_animation_example.js | 50 ++++++++++- stylesheets/base_example.css | 10 ++- 6 files changed, 279 insertions(+), 6 deletions(-) diff --git a/_posts/plugins/2014-03-25-css3-animation.html b/_posts/plugins/2014-03-25-css3-animation.html index f3e2047..c7e65e6 100644 --- a/_posts/plugins/2014-03-25-css3-animation.html +++ b/_posts/plugins/2014-03-25-css3-animation.html @@ -88,3 +88,86 @@

    {% highlight js %} track.install(new SilverTrack.Plugins.Css3Animation()); {% endhighlight %} + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +

    +Using the easing 'easeInOutQuad' in the track with 1s duration +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +

    +Using a track with mode "vertical" and autoHeight true. Let's configure different options to the animation. +

    + +{% highlight js %} +track.install(new SilverTrack.Plugins.Css3Animation({ + delayUnit: "s", + autoHeightDuration: 300, + autoHeightEasing: "easeInOutCubic", + autoHeightDelay: 1 +})); +{% endhighlight %} + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    diff --git a/_site/javascripts/plugin_css3_animation_example.js b/_site/javascripts/plugin_css3_animation_example.js index 325c147..d6b677a 100644 --- a/_site/javascripts/plugin_css3_animation_example.js +++ b/_site/javascripts/plugin_css3_animation_example.js @@ -1,6 +1,9 @@ $(function() { - var container = $(".track:first"); - var track = container.find(".slider-container").silverTrack(); + // ========================================================================= + // Without options + // ========================================================================= + var container = $(".track.sample1"); + var track = container.find(".slider-container").silverTrack({duration: 800}); track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", container), @@ -10,4 +13,47 @@ $(function() { track.install(new SilverTrack.Plugins.Css3Animation()); track.start(); + + // ========================================================================= + // Changinh the easing + // ========================================================================= + container = $(".track.sample2"); + track = container.find(".slider-container").silverTrack({ + duration: 1000, + easing: "easeInOutQuad" + }); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.install(new SilverTrack.Plugins.Css3Animation()); + + track.start(); + + // ========================================================================= + // Vertical track with autoHeight and some options + // ========================================================================= + container = $(".track.sample3"); + track = container.find(".slider-container").silverTrack({ + duration: 600, + easing: "easeInOutQuad", + mode: "vertical", + autoHeight: true + }); + + track.install(new SilverTrack.Plugins.Navigator({ + prev: $("a.prev", container), + next: $("a.next", container) + })); + + track.install(new SilverTrack.Plugins.Css3Animation({ + delayUnit: "s", + autoHeightDuration: 300, + autoHeightEasing: "easeInOutCubic", + autoHeightDelay: 1 + })); + + track.start(); }); diff --git a/_site/plugins/css3-animation.html b/_site/plugins/css3-animation.html index ae80dcd..92c6dfe 100644 --- a/_site/plugins/css3-animation.html +++ b/_site/plugins/css3-animation.html @@ -135,6 +135,88 @@

    track.install(new SilverTrack.Plugins.Css3Animation());
     
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +

    +Using the easing 'easeInOutQuad' in the track with 1s duration +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +

    +Using a track with mode "vertical" and autoHeight true. Let's configure different options to the animation. +

    + +
    track.install(new SilverTrack.Plugins.Css3Animation({
    +  delayUnit: "s",
    +  autoHeightDuration: 300,
    +  autoHeightEasing: "easeInOutCubic",
    +  autoHeightDelay: 1
    +}));
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +

    - +
    diff --git a/index.html b/index.html index aad3821..a8e0f5d 100644 --- a/index.html +++ b/index.html @@ -46,7 +46,7 @@

    Pick the best cover

    because it will occupy the whole first page, but it adds a nice touch of refinement
    - +
    From 3bad8081588a53efd8e18cd2151a88ac43548d0f Mon Sep 17 00:00:00 2001 From: tulios Date: Mon, 28 Apr 2014 22:41:14 -0300 Subject: [PATCH 34/34] first attempt of a touch mode, it is working with remote a local content --- _site/javascripts/home_examples.js | 2 +- .../javascripts/plugin/jquery.silver_track.js | 61 ++++++++++++++++++- .../jquery.silver_track.bullet_navigator.js | 28 ++++++--- .../plugins/jquery.silver_track.navigator.js | 4 ++ .../jquery.silver_track.remote_content.js | 30 ++++++++- .../plugin_remote_content_example.js | 7 ++- javascripts/home_examples.js | 2 +- javascripts/plugin/jquery.silver_track.js | 61 ++++++++++++++++++- .../jquery.silver_track.bullet_navigator.js | 28 ++++++--- .../plugins/jquery.silver_track.navigator.js | 8 +++ .../jquery.silver_track.remote_content.js | 22 +++++++ 11 files changed, 223 insertions(+), 30 deletions(-) diff --git a/_site/javascripts/home_examples.js b/_site/javascripts/home_examples.js index 74ca9b5..27fc4aa 100644 --- a/_site/javascripts/home_examples.js +++ b/_site/javascripts/home_examples.js @@ -4,7 +4,7 @@ $(function() { // Sample 1 // ========================================================================= var container = $(".track.sample1"); - var track = container.find(".slider-container").silverTrack({duration: 800}); + var track = container.find(".slider-container").silverTrack({duration: 800, touchMode: true}); track.install(new SilverTrack.Plugins.Css3Animation()); diff --git a/_site/javascripts/plugin/jquery.silver_track.js b/_site/javascripts/plugin/jquery.silver_track.js index e542858..9ca2491 100644 --- a/_site/javascripts/plugin/jquery.silver_track.js +++ b/_site/javascripts/plugin/jquery.silver_track.js @@ -34,7 +34,9 @@ * - easing and afterCallback may be optional * - movement will be {left: someValue} or {height: someValue} */ - animateFunction: null + animateFunction: null, + touchMode: false, + touchModeScrollDelay: 50 }; var SilverTrack = function (container, options) { @@ -44,6 +46,7 @@ this.calculateTotalPages = true; this.currentPage = 1; this.totalPages = 1; + this.touchModeActivated = true; //this.options.touchMode && this._isTouch(); this.plugins = []; this._items = null; @@ -161,6 +164,7 @@ if (this.calculateTotalPages) { this._calculateTotalPages(); } + this._setupTouchMode(); }, _getItems: function(ignoreCoverFilter) { @@ -215,6 +219,45 @@ } }, + _setupTouchMode: function() { + if (!this.touchModeActivated) { + return; + } + + this._executeAll("beforeTouchModeActivation"); + + var lastLeft = 0; + var allow = true; + var self = this; + var viewPort = this.container.parent(); + + viewPort.css({"overflow": "auto"}).off("scroll").on("scroll", function() { + if (allow) { + allow = false; + var scroll = this; + + setTimeout(function() { + var maxWidthPage = (self.itemWidth * self.options.perPage) * self.currentPage; + var used = scroll.scrollLeft + viewPort.width(); + + if (scroll.scrollLeft > lastLeft && used > maxWidthPage) { + var event = {lastPage: self.currentPage, currentPage: ++self.currentPage}; + self._executeAll("onCurrentPageUpdateInTouchMode", [event]); + + } else if (scroll.scrollLeft < lastLeft && used < maxWidthPage){ + if (self.currentPage > 1) { + var event = {lastPage: self.currentPage, currentPage: --self.currentPage}; + self._executeAll("onCurrentPageUpdateInTouchMode", [event]); + } + } + + lastLeft = scroll.scrollLeft; + allow = true; + }, self.options.touchModeScrollDelay); + } + }); + }, + _animate: function(movement, duration, afterCallback) { var easing = this.options.easing; if (this.options.animateFunction !== null) { @@ -336,8 +379,11 @@ _abs: function(string) { return Math.abs(parseInt(string, 10)); - } + }, + _isTouch: function() { + return !!(('ontouchstart' in window) || (window.DocumentTouch && window.document instanceof DocumentTouch)); + } } SilverTrack.Plugins = {}; @@ -378,7 +424,16 @@ * } */ beforeAdjustHeight: function(track, event) {}, - afterAdjustHeight: function(track, event) {} + afterAdjustHeight: function(track, event) {}, + + beforeTouchModeActivation: function(track) {}, + /* Event Format + * { + * lastPage: 1, + * currentPage: 2 + * } + */ + onCurrentPageUpdateInTouchMode: function(track, event) {} }, obj); } diff --git a/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js b/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js index e161d44..123531d 100644 --- a/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js @@ -32,12 +32,7 @@ var self = this; this._createBullets(); this._getBulletByPage(1).addClass(this.options.activeClass); - this._getBullets().click(function(e) { - e.preventDefault(); - var bullet = $(this); - self._updateBullets(bullet); - self.track.goToPage(bullet.data("page")); - }); + this._applyBulletClick(); }, beforePagination: function(track, event) { @@ -53,9 +48,11 @@ onTotalPagesUpdate: function() { this._clearBullets(); this._createBullets(); - this._getBullets().click(function(e) { - e.preventDefault(); - }); + this._applyBulletClick(); + }, + + onCurrentPageUpdateInTouchMode: function(track, event) { + this.afterRestart(); }, _clearBullets: function() { @@ -73,6 +70,19 @@ bullet.addClass(this.options.activeClass); }, + _applyBulletClick: function() { + if (this.track.touchModeActivated) { + return; + } + + this._getBullets().off("click").click(function(e) { + e.preventDefault(); + var bullet = $(this); + self._updateBullets(bullet); + self.track.goToPage(bullet.data("page")); + }); + }, + _getBulletByPage: function(page) { return $("." + this.options.bulletClass + "[data-page='" + page + "']", this.container); }, diff --git a/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js b/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js index 1501020..32bdadc 100644 --- a/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.navigator.js @@ -42,6 +42,10 @@ afterStart: function() { this.afterAnimation(); + if (this.track.touchModeActivated) { + this._disable(this.prev); + this._disable(this.next); + } }, afterAnimation: function() { diff --git a/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js b/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js index 5f9d523..fd93d34 100644 --- a/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js +++ b/_site/javascripts/plugin/plugins/jquery.silver_track.remote_content.js @@ -77,15 +77,25 @@ afterStart: function() { this.options.beforeStart(this.track); + if (this.options.lazy) { this._loadContent(this.track.currentPage, function() { this.filled = true; this.track.restart(); + this._adjustSpaceToLoad(); }); } else { this.filled = true; + this._adjustSpaceToLoad(); + } + }, + + _adjustSpaceToLoad: function() { + if (this.track.touchModeActivated) { + var widthWithLoadSpace = (this.track.container.outerWidth(true) + this.track.itemWidth) + "px"; + this.track.container.css("width", widthWithLoadSpace); } }, @@ -93,6 +103,23 @@ this.loadContentEnabled = true; }, + onCurrentPageUpdateInTouchMode: function(track, event) { + this.loadContentEnabled = true; + var url = this._generateUrl(event.currentPage); + var cached = !!this.ajaxCache[url]; + + if (this.loadContentEnabled && !cached) { + this._loadContent(event.currentPage, function() { + + if (this.track.hasNext()) { + this._adjustSpaceToLoad(); + } + + }); + } + }, + + // Never called in touchMode _updateNavigationControls: function() { var self = this; this.track.next = function() { @@ -111,8 +138,9 @@ _loadContent: function(page, contentLoadedCallback) { var self = this; var url = this._generateUrl(page); + var cached = !!this.ajaxCache[url]; - if (!this.ajaxCache[url]) { + if (!cached) { $.ajax( $.extend(this._ajaxDefaults(), { diff --git a/_site/javascripts/plugin_remote_content_example.js b/_site/javascripts/plugin_remote_content_example.js index 9012a5c..a47e27a 100644 --- a/_site/javascripts/plugin_remote_content_example.js +++ b/_site/javascripts/plugin_remote_content_example.js @@ -7,7 +7,7 @@ $(function() { var urlToEchoServer = function(track, page, perPage) { var jsonText = escape(JSON.stringify(fakeJsonCreator(page, perPage))); var echoServerHost = "http://echo-server.herokuapp.com"; - return echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=5"; + return echoServerHost + "/echo/json/" + page + "?json=" + jsonText + "&total_pages=4"; } // Support function for our test @@ -28,9 +28,10 @@ $(function() { var container = $(".track:first"); var track = container.find(".slider-container").silverTrack({ easing: "easeInOutQuad", - duration: 600 + duration: 600, + touchMode: true }); - +window.track = track; track.install(new SilverTrack.Plugins.Navigator({ prev: $("a.prev", container), next: $("a.next", container) diff --git a/javascripts/home_examples.js b/javascripts/home_examples.js index 74ca9b5..27fc4aa 100644 --- a/javascripts/home_examples.js +++ b/javascripts/home_examples.js @@ -4,7 +4,7 @@ $(function() { // Sample 1 // ========================================================================= var container = $(".track.sample1"); - var track = container.find(".slider-container").silverTrack({duration: 800}); + var track = container.find(".slider-container").silverTrack({duration: 800, touchMode: true}); track.install(new SilverTrack.Plugins.Css3Animation()); diff --git a/javascripts/plugin/jquery.silver_track.js b/javascripts/plugin/jquery.silver_track.js index e542858..9ca2491 100644 --- a/javascripts/plugin/jquery.silver_track.js +++ b/javascripts/plugin/jquery.silver_track.js @@ -34,7 +34,9 @@ * - easing and afterCallback may be optional * - movement will be {left: someValue} or {height: someValue} */ - animateFunction: null + animateFunction: null, + touchMode: false, + touchModeScrollDelay: 50 }; var SilverTrack = function (container, options) { @@ -44,6 +46,7 @@ this.calculateTotalPages = true; this.currentPage = 1; this.totalPages = 1; + this.touchModeActivated = true; //this.options.touchMode && this._isTouch(); this.plugins = []; this._items = null; @@ -161,6 +164,7 @@ if (this.calculateTotalPages) { this._calculateTotalPages(); } + this._setupTouchMode(); }, _getItems: function(ignoreCoverFilter) { @@ -215,6 +219,45 @@ } }, + _setupTouchMode: function() { + if (!this.touchModeActivated) { + return; + } + + this._executeAll("beforeTouchModeActivation"); + + var lastLeft = 0; + var allow = true; + var self = this; + var viewPort = this.container.parent(); + + viewPort.css({"overflow": "auto"}).off("scroll").on("scroll", function() { + if (allow) { + allow = false; + var scroll = this; + + setTimeout(function() { + var maxWidthPage = (self.itemWidth * self.options.perPage) * self.currentPage; + var used = scroll.scrollLeft + viewPort.width(); + + if (scroll.scrollLeft > lastLeft && used > maxWidthPage) { + var event = {lastPage: self.currentPage, currentPage: ++self.currentPage}; + self._executeAll("onCurrentPageUpdateInTouchMode", [event]); + + } else if (scroll.scrollLeft < lastLeft && used < maxWidthPage){ + if (self.currentPage > 1) { + var event = {lastPage: self.currentPage, currentPage: --self.currentPage}; + self._executeAll("onCurrentPageUpdateInTouchMode", [event]); + } + } + + lastLeft = scroll.scrollLeft; + allow = true; + }, self.options.touchModeScrollDelay); + } + }); + }, + _animate: function(movement, duration, afterCallback) { var easing = this.options.easing; if (this.options.animateFunction !== null) { @@ -336,8 +379,11 @@ _abs: function(string) { return Math.abs(parseInt(string, 10)); - } + }, + _isTouch: function() { + return !!(('ontouchstart' in window) || (window.DocumentTouch && window.document instanceof DocumentTouch)); + } } SilverTrack.Plugins = {}; @@ -378,7 +424,16 @@ * } */ beforeAdjustHeight: function(track, event) {}, - afterAdjustHeight: function(track, event) {} + afterAdjustHeight: function(track, event) {}, + + beforeTouchModeActivation: function(track) {}, + /* Event Format + * { + * lastPage: 1, + * currentPage: 2 + * } + */ + onCurrentPageUpdateInTouchMode: function(track, event) {} }, obj); } diff --git a/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js b/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js index e161d44..123531d 100644 --- a/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js +++ b/javascripts/plugin/plugins/jquery.silver_track.bullet_navigator.js @@ -32,12 +32,7 @@ var self = this; this._createBullets(); this._getBulletByPage(1).addClass(this.options.activeClass); - this._getBullets().click(function(e) { - e.preventDefault(); - var bullet = $(this); - self._updateBullets(bullet); - self.track.goToPage(bullet.data("page")); - }); + this._applyBulletClick(); }, beforePagination: function(track, event) { @@ -53,9 +48,11 @@ onTotalPagesUpdate: function() { this._clearBullets(); this._createBullets(); - this._getBullets().click(function(e) { - e.preventDefault(); - }); + this._applyBulletClick(); + }, + + onCurrentPageUpdateInTouchMode: function(track, event) { + this.afterRestart(); }, _clearBullets: function() { @@ -73,6 +70,19 @@ bullet.addClass(this.options.activeClass); }, + _applyBulletClick: function() { + if (this.track.touchModeActivated) { + return; + } + + this._getBullets().off("click").click(function(e) { + e.preventDefault(); + var bullet = $(this); + self._updateBullets(bullet); + self.track.goToPage(bullet.data("page")); + }); + }, + _getBulletByPage: function(page) { return $("." + this.options.bulletClass + "[data-page='" + page + "']", this.container); }, diff --git a/javascripts/plugin/plugins/jquery.silver_track.navigator.js b/javascripts/plugin/plugins/jquery.silver_track.navigator.js index 1501020..a531bac 100644 --- a/javascripts/plugin/plugins/jquery.silver_track.navigator.js +++ b/javascripts/plugin/plugins/jquery.silver_track.navigator.js @@ -42,6 +42,10 @@ afterStart: function() { this.afterAnimation(); + if (this.track.touchModeActivated) { + this._disable(this.prev); + this._disable(this.next); + } }, afterAnimation: function() { @@ -63,6 +67,10 @@ _disable: function(element) { element.addClass(this.options.disabledClass); + }, + + _isTouch: function() { + return !!(('ontouchstart' in window) || (window.DocumentTouch && window.document instanceof DocumentTouch)); } }); diff --git a/javascripts/plugin/plugins/jquery.silver_track.remote_content.js b/javascripts/plugin/plugins/jquery.silver_track.remote_content.js index 5f9d523..da0689c 100644 --- a/javascripts/plugin/plugins/jquery.silver_track.remote_content.js +++ b/javascripts/plugin/plugins/jquery.silver_track.remote_content.js @@ -77,15 +77,25 @@ afterStart: function() { this.options.beforeStart(this.track); + if (this.options.lazy) { this._loadContent(this.track.currentPage, function() { this.filled = true; this.track.restart(); + this._adjustSpaceToLoad(); }); } else { this.filled = true; + this._adjustSpaceToLoad(); + } + }, + + _adjustSpaceToLoad: function() { + if (this.track.touchModeActivated) { + var widthWithLoadSpace = (this.track.container.outerWidth(true) + this.track.itemWidth) + "px"; + this.track.container.css("width", widthWithLoadSpace); } }, @@ -93,6 +103,18 @@ this.loadContentEnabled = true; }, + onCurrentPageUpdateInTouchMode: function(track, event) { + this.loadContentEnabled = true; + + if (this.track.hasNext() && this.loadContentEnabled) { + this._loadContent(event.currentPage, function() { + if (this.track.hasNext()) { + this._adjustSpaceToLoad(); + } + }); + } + }, + _updateNavigationControls: function() { var self = this; this.track.next = function() {