From bffbd86c8e48da1a23a3e3cfaa01cfc93027bb88 Mon Sep 17 00:00:00 2001 From: valery <valery.fremaux@gmail.com> Date: Mon, 4 Dec 2017 20:53:40 +0100 Subject: [PATCH] Automated sync from SVN --- amd/src/library.js | 15 +- browse.php | 15 +- classes/navigator.class.php | 10 +- index.php | 12 +- jquery/jquery-animateNumber-0.0.13/.gitignore | 1 + jquery/jquery-animateNumber-0.0.13/LICENSE | 20 + jquery/jquery-animateNumber-0.0.13/README.md | 74 + .../jquery-animateNumber-0.0.13/README.ru.md | 75 + .../animateNumber.jquery.json | 36 + jquery/jquery-animateNumber-0.0.13/bower.json | 32 + .../demo/index.html | 43 + .../demo/jquery.color.min.js | 13 + .../jquery-animateNumber-0.0.13/gruntfile.js | 34 + .../jquery.animateNumber.js | 173 + .../jquery.animateNumber.min.js | 8 + .../jquery-animateNumber-0.0.13/package.json | 31 + jquery/plugins.php | 6 + jquery/slick/Thumbs.db | Bin 0 -> 3072 bytes jquery/slick/ajax-loader.gif | Bin 0 -> 4178 bytes jquery/slick/config.rb | 10 + jquery/slick/fonts/slick.eot | Bin 0 -> 2048 bytes jquery/slick/fonts/slick.svg | 14 + jquery/slick/fonts/slick.ttf | Bin 0 -> 1892 bytes jquery/slick/fonts/slick.woff | Bin 0 -> 1380 bytes jquery/slick/slick-theme.css | 204 ++ jquery/slick/slick-theme.less | 168 + jquery/slick/slick-theme.scss | 194 ++ jquery/slick/slick.css | 200 ++ jquery/slick/slick.js | 2892 +++++++++++++++++ jquery/slick/slick.less | 98 + jquery/slick/slick.min.js | 18 + jquery/slick/slick.scss | 98 + lang/en/local_sharedresources.php | 26 +- lang/fr/local_sharedresources.php | 26 +- lib.php | 45 +- oai/oai2/record_lomfr.php | 5 +- oai/oaidp-config.php | 5 +- renderer.php | 78 +- settings.php | 60 +- templates/resourcebody.mustache | 16 +- templates/resourcecategory.mustache | 4 +- templates/resourcecommands.mustache | 22 +- templates/searchform.mustache | 8 +- templates/searchform_tableless.mustache | 8 +- version.php | 2 +- 45 files changed, 4651 insertions(+), 148 deletions(-) create mode 100644 jquery/jquery-animateNumber-0.0.13/.gitignore create mode 100644 jquery/jquery-animateNumber-0.0.13/LICENSE create mode 100644 jquery/jquery-animateNumber-0.0.13/README.md create mode 100644 jquery/jquery-animateNumber-0.0.13/README.ru.md create mode 100644 jquery/jquery-animateNumber-0.0.13/animateNumber.jquery.json create mode 100644 jquery/jquery-animateNumber-0.0.13/bower.json create mode 100644 jquery/jquery-animateNumber-0.0.13/demo/index.html create mode 100644 jquery/jquery-animateNumber-0.0.13/demo/jquery.color.min.js create mode 100644 jquery/jquery-animateNumber-0.0.13/gruntfile.js create mode 100644 jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.js create mode 100644 jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.min.js create mode 100644 jquery/jquery-animateNumber-0.0.13/package.json create mode 100644 jquery/plugins.php create mode 100644 jquery/slick/Thumbs.db create mode 100644 jquery/slick/ajax-loader.gif create mode 100644 jquery/slick/config.rb create mode 100644 jquery/slick/fonts/slick.eot create mode 100644 jquery/slick/fonts/slick.svg create mode 100644 jquery/slick/fonts/slick.ttf create mode 100644 jquery/slick/fonts/slick.woff create mode 100644 jquery/slick/slick-theme.css create mode 100644 jquery/slick/slick-theme.less create mode 100644 jquery/slick/slick-theme.scss create mode 100644 jquery/slick/slick.css create mode 100644 jquery/slick/slick.js create mode 100644 jquery/slick/slick.less create mode 100644 jquery/slick/slick.min.js create mode 100644 jquery/slick/slick.scss diff --git a/amd/src/library.js b/amd/src/library.js index ebef391..fbec812 100644 --- a/amd/src/library.js +++ b/amd/src/library.js @@ -38,8 +38,9 @@ define(['jquery', 'core/config', 'core/log'], function ($, cfg, log) { } ); - $('.sharedressource-toggle-handle').on('click', this.toggle_info_panel); + $('.sharedresource-toggle-handle').bind('click', this.toggle_info_panel); $('.sharedresource-mark-like').on('click', '', args, this.ajax_mark_like); + $('.sharedresource-actionlink').bind('click', this.integrate); }, ajax_mark_like: function (e) { @@ -80,5 +81,17 @@ define(['jquery', 'core/config', 'core/log'], function ($, cfg, log) { $('#sharedresource-toggle-' + residentifier).attr('src', iconsrc); } }, + + integrate: function() { + + var that = $(this); + + var matches = that.attr('id').match(/id-(\w+)-(\d+)/); + command = matches[1]; + ix = matches[2]; + document.forms['add' + ix].mode.value = command; + document.forms['add' + ix].submit(); + } + }; }); \ No newline at end of file diff --git a/browse.php b/browse.php index e5deead..2cb869d 100644 --- a/browse.php +++ b/browse.php @@ -65,7 +65,7 @@ $filters = null; $navigator = new \local_sharedresources\browser\navigation(); -$classificationfilters = $navigator->get_category_filters(); +// $classificationfilters = $navigator->get_category_filters(); $i = 0; foreach ($classificationfilters as $afilter) { @@ -89,7 +89,10 @@ if (is_dir($CFG->dirroot.'/local/staticguitexts')) { // Making filters. -echo $renderer->filters($catid, $catpath); +echo $renderer->searchlink(); +// echo $renderer->filters($catid, $catpath); + +echo $renderer->taxonomy_select(); // Calling navigation. @@ -98,10 +101,14 @@ if ($catid) { echo $renderer->category($category, $catpath, $navigator->count_entries_rec($category), 'current', true); // Root of the catalog cannot have resourses. - echo $renderer->resourcelist(array_keys($cattree->entries)); + echo $renderer->resourcelist(array_keys($category->entries)); +} else { + $category = new StdClass; + $catid = 0; + $category->cats = $navigator->get_children($$catid); } -echo $renderer->children($cattree, $catpath); +echo $renderer->children($category, $catpath); echo $renderer->searchlink(); diff --git a/classes/navigator.class.php b/classes/navigator.class.php index 7a69b10..cbf1281 100644 --- a/classes/navigator.class.php +++ b/classes/navigator.class.php @@ -65,7 +65,10 @@ class navigation { return $DB->get_record('sharedresource_taxonomy', array('id' => $catid)); } - // Counts the total number of entries + /** + * Counts the total number of entries recusrsively in the subtree. + * @param int $catid + */ function count_entries_rec($catid) { global $DB; @@ -86,9 +89,14 @@ class navigation { } } + /** + * Get children of a category + */ function get_children(&$categoryorid) { global $DB; + $config = get_config('sharedresource'); + if (is_object($categoryorid)) { $catid = $category->id; } else { diff --git a/index.php b/index.php index 50ecc7e..ecaa385 100644 --- a/index.php +++ b/index.php @@ -46,6 +46,7 @@ $PAGE->requires->jquery(); $PAGE->requires->js('/local/sharedresources/js/search.js', true); $config = get_config('sharedresource'); +$mtdplugin = sharedresource_get_plugin($config->schema); $edit = optional_param('edit', -1, PARAM_BOOL); $blockaction = optional_param('blockaction', '', PARAM_ALPHA); @@ -181,10 +182,13 @@ if ($fullresults['maxobjects'] <= $page) { } echo '</div>'; -echo '<center>'; -echo '<br/>'; -echo $renderer->browserlink(); -echo '</center>'; +if ($mtdplugin->getTaxonomyValueElement()) { + // Only browse if there is a taxonomy in the metadata schema. + echo '<center>'; + echo '<br/>'; + echo $renderer->browserlink(); + echo '</center>'; +} if ($courseid > SITEID) { $options['id'] = $course->id; diff --git a/jquery/jquery-animateNumber-0.0.13/.gitignore b/jquery/jquery-animateNumber-0.0.13/.gitignore new file mode 100644 index 0000000..096746c --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/.gitignore @@ -0,0 +1 @@ +/node_modules/ \ No newline at end of file diff --git a/jquery/jquery-animateNumber-0.0.13/LICENSE b/jquery/jquery-animateNumber-0.0.13/LICENSE new file mode 100644 index 0000000..2aa01eb --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Alexandr Borisov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/jquery/jquery-animateNumber-0.0.13/README.md b/jquery/jquery-animateNumber-0.0.13/README.md new file mode 100644 index 0000000..88f5304 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/README.md @@ -0,0 +1,74 @@ +[](https://codeclimate.com/github/aishek/jquery-animateNumber) + +jquery-animateNumber +==================== + +[Demo](http://aishek.github.io/jquery-animateNumber/) | [v0.0.13 – Latest Release](https://github.com/aishek/jquery-animateNumber/releases/tag/v0.0.13) + +[README на русском языке](https://github.com/aishek/jquery-animateNumber/blob/master/README.ru.md) + +jQuery numbers animation plugin, adds 'number' property and step function to jQuery's animate function properties. + +Requires jQuery 1.7.0 or higher (tested with 2.0.3, 2.0.2, 2.0.1, 2.0.0, 1.10.2, 1.10.1, 1.10.0, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.0). + +## Quick example +```html +<p>Fun level <span id="fun-level" style="color: red; font-size: 0px;">0 %</span>.</p> +``` + +```js +// animateNumber accepts same arguments, as animate does +// it adds only 'number' and 'numberStep' params +$('#fun-level').animateNumber( + { + number: 100, + color: 'green', // require jquery.color + 'font-size': '50px', + + easing: 'easeInQuad', // require jquery.easing + + // optional custom step function + // using here to keep '%' sign after number + numberStep: function(now, tween) { + var floored_number = Math.floor(now), + target = $(tween.elem); + + target.text(floored_number + ' %'); + } + }, + 1800 +); +``` + +[All examples](http://aishek.github.io/jquery-animateNumber/) + +## Alternative plugins for same task + +* [jQuery Numerator](http://plugins.jquery.com/numerator/) + +## Development + +1. `npm install grunt-cli -g` +2. `npm install` +3. `https://github.com/gmarty/grunt-closure-compiler` +4. `grunt watch` + +## Note on Patches / Pull Requests + +* Fork the project. +* Make your feature addition or bug fix. +* Send me a pull request. Bonus points for topic branches. + +## License + +It is free software, and may be redistributed under the terms specified in the LICENSE file. + +## Credits + +jquery-animateNumber is maintained by [Cifronomika](http://cifronomika.ru/). + +Contributors: + +* [Alexandr Borisov](https://github.com/aishek) +* [Greg Thornton](https://github.com/xdissent) +* [Tomáš Opekar](https://github.com/topik) diff --git a/jquery/jquery-animateNumber-0.0.13/README.ru.md b/jquery/jquery-animateNumber-0.0.13/README.ru.md new file mode 100644 index 0000000..89013e6 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/README.ru.md @@ -0,0 +1,75 @@ +[](https://codeclimate.com/github/aishek/jquery-animateNumber) + +jquery-animateNumber +==================== + +[Примеры](http://aishek.github.io/jquery-animateNumber/) | [v0.0.13 – последняя версия](https://github.com/aishek/jquery-animateNumber/releases/tag/v0.0.13) + +[README in english](https://github.com/aishek/jquery-animateNumber) + +Этот плагин для jQuery позволяет анимировать числа, добавляя к функции $.animate свойства number и numberStep. + +Работает с jQuery 1.7.0 или более новой версией (тестировался на версиях 2.0.3, 2.0.2, 2.0.1, 2.0.0, 1.10.2, 1.10.1, 1.10.0, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.0). + +## Пример +```html +<p>Уровень качества <span id="fun-level" style="color: red; font-size: 0px;">0 %</span>.</p> +``` + +```js +// функция $.animateNumber принимает такие же аргументы, +// как и $.animate, дополнительно можно использовать +// параметры 'number' и 'numberStep' +$('#fun-level').animateNumber( + { + number: 100, + color: 'green', // требует jquery.color + 'font-size': '50px', + + easing: 'easeInQuad', // требует jquery.easing + + // опциональный аргумент: функция шага анимации числа + // здесь используется, чтобы добавить '%' в конце числа + numberStep: function(now, tween) { + var floored_number = Math.floor(now), + target = $(tween.elem); + + target.text(floored_number + ' %'); + } + }, + 1800 +); +``` + +[Все примеры](http://aishek.github.io/jquery-animateNumber/) + +## Другие плагины для анимации чисел + +* [jQuery Numerator](http://plugins.jquery.com/numerator/) + +## Разработка + +1. `npm install grunt-cli -g` +2. `npm install` +3. `https://github.com/gmarty/grunt-closure-compiler` +4. `grunt watch` + +## Note on Patches / Pull Requests + +* Сделайте форк. +* Внесите изменения. +* Сделайте пулл-реквест. Ваши изменения в отдельной ветке принесут плюс в карму :) + +## Лицензия + +jquery-animateNumber является бесплатным ПО, подробности в файле LICENSE. + +## Авторы + +Плагин jquery-animateNumber поддерживается [Цифрономикой](http://cifronomika.ru/). + +Авторы: + +* [Александр Борисов](https://github.com/aishek) +* [Greg Thornton](https://github.com/xdissent) +* [Tomáš Opekar](https://github.com/topik) diff --git a/jquery/jquery-animateNumber-0.0.13/animateNumber.jquery.json b/jquery/jquery-animateNumber-0.0.13/animateNumber.jquery.json new file mode 100644 index 0000000..2b78566 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/animateNumber.jquery.json @@ -0,0 +1,36 @@ +{ + "name": "animateNumber", + "title": "jQuery animateNumber", + "description": "jQuery plugin for animation number same way which animate function does.", + "keywords": [ + "number", + "animation" + ], + "version": "0.0.13", + "author": { + "name": "Alexandr Borisov", + "email": "aishek@gmail.com", + "url": "http://cifronomika.ru" + }, + "maintainers": [ + { + "name": "Alexandr Borisov", + "email": "aishek@gmail.com", + "url": "http://cifronomika.ru" + } + ], + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/aishek/jquery-animateNumber/blob/master/LICENSE" + } + ], + "bugs": "https://github.com/aishek/jquery-animateNumber/issues", + "homepage": "https://github.com/aishek/jquery-animateNumber", + "docs": "https://github.com/aishek/jquery-animateNumber", + "demo": "http://aishek.github.io/jquery-animateNumber/", + "download": "https://github.com/aishek/jquery-animateNumber/releases", + "dependencies": { + "jquery": ">=1.7.0" + } +} diff --git a/jquery/jquery-animateNumber-0.0.13/bower.json b/jquery/jquery-animateNumber-0.0.13/bower.json new file mode 100644 index 0000000..13f3839 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/bower.json @@ -0,0 +1,32 @@ +{ + "name": "jquery-animateNumber", + "version": "0.0.13", + "homepage": "https://github.com/aishek/jquery-animateNumber", + "authors": [ + "Alexandr Borisov <aishek@gmail.com>", + "Greg Thornton", + "Tomáš Opekar" + ], + "description": "jQuery animate number plugin", + "main": "jquery.animateNumber.js", + "keywords": [ + "jquery", + "animate", + "number" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "demo", + "package.json", + "animateNumber.jquery.json", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "jquery": ">=1.7.0" + } +} + diff --git a/jquery/jquery-animateNumber-0.0.13/demo/index.html b/jquery/jquery-animateNumber-0.0.13/demo/index.html new file mode 100644 index 0000000..63d748d --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/demo/index.html @@ -0,0 +1,43 @@ +<p>Fun level <span id="target" style="font-size: 10px; color: red;">0 %</span>.</p> + +<!--script src="http://code.jquery.com/jquery-2.0.3.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-2.0.2.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-2.0.1.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-2.0.0.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.10.2.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.10.1.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.10.0.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.9.1.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.9.0.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.8.3.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.8.2.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.8.1.min.js"></script--> +<!--script src="http://code.jquery.com/jquery-1.8.0.min.js"></script--> +<script src="http://code.jquery.com/jquery-1.7.0.min.js"></script> + +<script src="jquery.color.min.js"></script> +<script src="../jquery.animateNumber.min.js"></script> + +<script> + var decimal_places = 1; + var decimal_factor = decimal_places === 0 ? 1 : decimal_places * 10; + + $('#target').animateNumber( + { + number: 100 * decimal_factor, + color: 'green', + 'font-size': '30px', + + numberStep: function(now, tween) { + var floored_number = Math.floor(now) / decimal_factor, + target = $(tween.elem); + if (decimal_places > 0) { + floored_number = floored_number.toFixed(decimal_places); + } + + target.text(floored_number + ' %'); + } + }, + 15000 + ) +</script> diff --git a/jquery/jquery-animateNumber-0.0.13/demo/jquery.color.min.js b/jquery/jquery-animateNumber-0.0.13/demo/jquery.color.min.js new file mode 100644 index 0000000..41b61df --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/demo/jquery.color.min.js @@ -0,0 +1,13 @@ +(function(f,p){function q(a,b,c){var d=u[b.type]||{};if(null==a)return c||!b.def?null:b.def;a=d.floor?~~a:parseFloat(a);return isNaN(a)?b.def:d.mod?(a+d.mod)%d.mod:0>a?0:d.max<a?d.max:a}function v(a){var b=h(),c=b._rgba=[];a=a.toLowerCase();l(y,function(d,g){var e,k=g.re.exec(a);e=k&&g.parse(k);k=g.space||"rgba";if(e)return e=b[k](e),b[m[k].cache]=e[m[k].cache],c=b._rgba=e._rgba,!1});return c.length?("0,0,0,0"===c.join()&&f.extend(c,r.transparent),b):r[a]}function s(a,b,c){c=(c+1)%1;return 1>6*c? +a+(b-a)*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}var z=/^([\-+])=\s*(\d+\.?\d*)/,y=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16), +parseInt(a[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(a){return[a[1],a[2]/100,a[3]/100,a[4]]}}],h=f.Color=function(a,b,c,d){return new f.Color.fn.parse(a,b,c,d)},m={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0, +type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},w=h.support={},x=f("<p>")[0],r,l=f.each;x.style.cssText="background-color:rgba(1,1,1,.5)";w.rgba=-1<x.style.backgroundColor.indexOf("rgba");l(m,function(a,b){b.cache="_"+a;b.props.alpha={idx:3,type:"percent",def:1}});h.fn=f.extend(h.prototype,{parse:function(a,b,c,d){if(a===p)return this._rgba=[null,null,null,null],this;if(a.jquery||a.nodeType)a= +f(a).css(b),b=p;var g=this,e=f.type(a),k=this._rgba=[];b!==p&&(a=[a,b,c,d],e="array");if("string"===e)return this.parse(v(a)||r._default);if("array"===e)return l(m.rgba.props,function(d,c){k[c.idx]=q(a[c.idx],c)}),this;if("object"===e)return a instanceof h?l(m,function(c,d){a[d.cache]&&(g[d.cache]=a[d.cache].slice())}):l(m,function(d,c){var b=c.cache;l(c.props,function(d,e){if(!g[b]&&c.to){if("alpha"===d||null==a[d])return;g[b]=c.to(g._rgba)}g[b][e.idx]=q(a[d],e,!0)});g[b]&&0>f.inArray(null,g[b].slice(0, +3))&&(g[b][3]=1,c.from&&(g._rgba=c.from(g[b])))}),this},is:function(a){var b=h(a),c=!0,d=this;l(m,function(a,e){var k,f=b[e.cache];f&&(k=d[e.cache]||e.to&&e.to(d._rgba)||[],l(e.props,function(a,d){if(null!=f[d.idx])return c=f[d.idx]===k[d.idx]}));return c});return c},_space:function(){var a=[],b=this;l(m,function(c,d){b[d.cache]&&a.push(c)});return a.pop()},transition:function(a,b){var c=h(a),d=c._space(),g=m[d],e=0===this.alpha()?h("transparent"):this,k=e[g.cache]||g.to(e._rgba),f=k.slice(),c=c[g.cache]; +l(g.props,function(a,d){var g=d.idx,e=k[g],h=c[g],l=u[d.type]||{};null!==h&&(null===e?f[g]=h:(l.mod&&(h-e>l.mod/2?e+=l.mod:e-h>l.mod/2&&(e-=l.mod)),f[g]=q((h-e)*b+e,d)))});return this[d](f)},blend:function(a){if(1===this._rgba[3])return this;var b=this._rgba.slice(),c=b.pop(),d=h(a)._rgba;return h(f.map(b,function(a,b){return(1-c)*d[b]+c*a}))},toRgbaString:function(){var a="rgba(",b=f.map(this._rgba,function(a,d){return null==a?2<d?1:0:a});1===b[3]&&(b.pop(),a="rgb(");return a+b.join()+")"},toHslaString:function(){var a= +"hsla(",b=f.map(this.hsla(),function(a,d){null==a&&(a=2<d?1:0);d&&3>d&&(a=Math.round(100*a)+"%");return a});1===b[3]&&(b.pop(),a="hsl(");return a+b.join()+")"},toHexString:function(a){var b=this._rgba.slice(),c=b.pop();a&&b.push(~~(255*c));return"#"+f.map(b,function(a){a=(a||0).toString(16);return 1===a.length?"0"+a:a}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}});h.fn.parse.prototype=h.fn;m.hsla.to=function(a){if(null==a[0]||null==a[1]||null==a[2])return[null, +null,null,a[3]];var b=a[0]/255,c=a[1]/255,d=a[2]/255;a=a[3];var g=Math.max(b,c,d),e=Math.min(b,c,d),k=g-e,f=g+e,h=0.5*f,f=0===k?0:0.5>=h?k/f:k/(2-f);return[Math.round(e===g?0:b===g?60*(c-d)/k+360:c===g?60*(d-b)/k+120:60*(b-c)/k+240)%360,f,h,null==a?1:a]};m.hsla.from=function(a){if(null==a[0]||null==a[1]||null==a[2])return[null,null,null,a[3]];var b=a[0]/360,c=a[1],d=a[2];a=a[3];c=0.5>=d?d*(1+c):d+c-d*c;d=2*d-c;return[Math.round(255*s(d,c,b+1/3)),Math.round(255*s(d,c,b)),Math.round(255*s(d,c,b-1/3)), +a]};l(m,function(a,b){var c=b.props,d=b.cache,g=b.to,e=b.from;h.fn[a]=function(a){g&&!this[d]&&(this[d]=g(this._rgba));if(a===p)return this[d].slice();var b,t=f.type(a),m="array"===t||"object"===t?a:arguments,n=this[d].slice();l(c,function(a,d){var b=m["object"===t?a:d.idx];null==b&&(b=n[d.idx]);n[d.idx]=q(b,d)});return e?(b=h(e(n)),b[d]=n,b):h(n)};l(c,function(d,b){h.fn[d]||(h.fn[d]=function(c){var e=f.type(c),g="alpha"===d?this._hsla?"hsla":"rgba":a,h=this[g](),l=h[b.idx];if("undefined"===e)return l; +"function"===e&&(c=c.call(this,l),e=f.type(c));if(null==c&&b.empty)return this;"string"===e&&(e=z.exec(c))&&(c=l+parseFloat(e[2])*("+"===e[1]?1:-1));h[b.idx]=c;return this[g](h)})})});h.hook=function(a){a=a.split(" ");l(a,function(a,c){f.cssHooks[c]={set:function(a,b){var e,k="";if("transparent"!==b&&("string"!==f.type(b)||(e=v(b)))){b=h(e||b);if(!w.rgba&&1!==b._rgba[3]){for(e="backgroundColor"===c?a.parentNode:a;(""===k||"transparent"===k)&&e&&e.style;)try{k=f.css(e,"backgroundColor"),e=e.parentNode}catch(l){}b= +b.blend(k&&"transparent"!==k?k:"_default")}b=b.toRgbaString()}try{a.style[c]=b}catch(m){}}};f.fx.step[c]=function(a){a.colorInit||(a.start=h(a.elem,c),a.end=h(a.end),a.colorInit=!0);f.cssHooks[c].set(a.elem,a.start.transition(a.end,a.pos))}})};h.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor");f.cssHooks.borderColor={expand:function(a){var b={};l(["Top","Right","Bottom","Left"],function(c, +d){b["border"+d+"Color"]=a});return b}};r=f.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}})(jQuery); \ No newline at end of file diff --git a/jquery/jquery-animateNumber-0.0.13/gruntfile.js b/jquery/jquery-animateNumber-0.0.13/gruntfile.js new file mode 100644 index 0000000..a5bdfc8 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/gruntfile.js @@ -0,0 +1,34 @@ +module.exports = function(grunt) { + + grunt.initConfig({ + watch: { + // Следим за файлами, выполняем таски при каждом изменении + options: { + // При вызове в терминале `grunt watch` + // сначала выполнятся все таски и потом начнётся слежение + atBegin: true + }, + js: { + // Все файлы в папке www/js (включая подпапки) + files: 'jquery.animateNumber.js', + tasks: ['closure-compiler'] + } + }, + 'closure-compiler': { + frontend: { + js: 'jquery.animateNumber.js', + jsOutputFile: 'jquery.animateNumber.min.js', + noreport: true, + options: {} + } + } + }); + + // Загружаем установленные задачи + // (офтопик: будь я разработчиком Гранта, выкинул бы этот блок) + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-closure-compiler'); + + // Задача по умолчанию (`grunt` в терминале) + grunt.registerTask('default', ['closure-compiler']); +}; \ No newline at end of file diff --git a/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.js b/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.js new file mode 100644 index 0000000..dab1b7b --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.js @@ -0,0 +1,173 @@ +/** @preserve jQuery animateNumber plugin v0.0.13 + * (c) 2013, Alexandr Borisov. + * https://github.com/aishek/jquery-animateNumber + */ + +// ['...'] notation using to avoid names minification by Google Closure Compiler +(function($) { + var reverse = function(value) { + return value.split('').reverse().join(''); + }; + + var defaults = { + numberStep: function(now, tween) { + var floored_number = Math.floor(now), + target = $(tween.elem); + + target.text(floored_number); + } + }; + + var handle = function( tween ) { + var elem = tween.elem; + if ( elem.nodeType && elem.parentNode ) { + var handler = elem._animateNumberSetter; + if (!handler) { + handler = defaults.numberStep; + } + handler(tween.now, tween); + } + }; + + if (!$.Tween || !$.Tween.propHooks) { + $.fx.step.number = handle; + } else { + $.Tween.propHooks.number = { + set: handle + }; + } + + var extract_number_parts = function(separated_number, group_length) { + var numbers = separated_number.split('').reverse(), + number_parts = [], + current_number_part, + current_index, + q; + + for(var i = 0, l = Math.ceil(separated_number.length / group_length); i < l; i++) { + current_number_part = ''; + for(q = 0; q < group_length; q++) { + current_index = i * group_length + q; + if (current_index === separated_number.length) { + break; + } + + current_number_part = current_number_part + numbers[current_index]; + } + number_parts.push(current_number_part); + } + + return number_parts; + }; + + var remove_precending_zeros = function(number_parts) { + var last_index = number_parts.length - 1, + last = reverse(number_parts[last_index]); + + number_parts[last_index] = reverse(parseInt(last, 10).toString()); + return number_parts; + }; + + $.animateNumber = { + numberStepFactories: { + /** + * Creates numberStep handler, which appends string to floored animated number on each step. + * + * @example + * // will animate to 100 with "1 %", "2 %", "3 %", ... + * $('#someid').animateNumber({ + * number: 100, + * numberStep: $.animateNumber.numberStepFactories.append(' %') + * }); + * + * @params {String} suffix string to append to animated number + * @returns {Function} numberStep-compatible function for use in animateNumber's parameters + */ + append: function(suffix) { + return function(now, tween) { + var floored_number = Math.floor(now), + target = $(tween.elem); + + target.prop('number', now).text(floored_number + suffix); + }; + }, + + /** + * Creates numberStep handler, which format floored numbers by separating them to groups. + * + * @example + * // will animate with 1 ... 217,980 ... 95,217,980 ... 7,095,217,980 + * $('#world-population').animateNumber({ + * number: 7095217980, + * numberStep: $.animateNumber.numberStepFactories.separator(',') + * }); + * @example + * // will animate with 1% ... 217,980% ... 95,217,980% ... 7,095,217,980% + * $('#salesIncrease').animateNumber({ + * number: 7095217980, + * numberStep: $.animateNumber.numberStepFactories.separator(',', 3, '%') + * }); + * + * @params {String} [separator=' '] string to separate number groups + * @params {String} [group_length=3] number group length + * @params {String} [suffix=''] suffix to append to number + * @returns {Function} numberStep-compatible function for use in animateNumber's parameters + */ + separator: function(separator, group_length, suffix) { + separator = separator || ' '; + group_length = group_length || 3; + suffix = suffix || ''; + + return function(now, tween) { + var floored_number = Math.floor(now), + separated_number = floored_number.toString(), + target = $(tween.elem); + + if (separated_number.length > group_length) { + var number_parts = extract_number_parts(separated_number, group_length); + + separated_number = remove_precending_zeros(number_parts).join(separator); + separated_number = reverse(separated_number); + } + + target.prop('number', now).text(separated_number + suffix); + }; + } + } + }; + + $.fn.animateNumber = function() { + var options = arguments[0], + settings = $.extend({}, defaults, options), + + target = $(this), + args = [settings]; + + for(var i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + + // needs of custom step function usage + if (options.numberStep) { + // assigns custom step functions + var items = this.each(function(){ + this._animateNumberSetter = options.numberStep; + }); + + // cleanup of custom step functions after animation + var generic_complete = settings.complete; + settings.complete = function() { + items.each(function(){ + delete this._animateNumberSetter; + }); + + if ( generic_complete ) { + generic_complete.apply(this, arguments); + } + }; + } + + return target.animate.apply(target, args); + }; + +}(jQuery)); diff --git a/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.min.js b/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.min.js new file mode 100644 index 0000000..4ab09e5 --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/jquery.animateNumber.min.js @@ -0,0 +1,8 @@ +/* + jQuery animateNumber plugin v0.0.13 + (c) 2013, Alexandr Borisov. + https://github.com/aishek/jquery-animateNumber +*/ +(function(d){var q=function(b){return b.split("").reverse().join("")},m={numberStep:function(b,a){var e=Math.floor(b);d(a.elem).text(e)}},h=function(b){var a=b.elem;a.nodeType&&a.parentNode&&(a=a._animateNumberSetter,a||(a=m.numberStep),a(b.now,b))};d.Tween&&d.Tween.propHooks?d.Tween.propHooks.number={set:h}:d.fx.step.number=h;d.animateNumber={numberStepFactories:{append:function(b){return function(a,e){var g=Math.floor(a);d(e.elem).prop("number",a).text(g+b)}},separator:function(b,a,e){b=b||" "; +a=a||3;e=e||"";return function(g,k){var c=Math.floor(g).toString(),t=d(k.elem);if(c.length>a){for(var f=c,l=a,m=f.split("").reverse(),c=[],n,r,p,s=0,h=Math.ceil(f.length/l);s<h;s++){n="";for(p=0;p<l;p++){r=s*l+p;if(r===f.length)break;n+=m[r]}c.push(n)}f=c.length-1;l=q(c[f]);c[f]=q(parseInt(l,10).toString());c=c.join(b);c=q(c)}t.prop("number",g).text(c+e)}}}};d.fn.animateNumber=function(){for(var b=arguments[0],a=d.extend({},m,b),e=d(this),g=[a],k=1,c=arguments.length;k<c;k++)g.push(arguments[k]); +if(b.numberStep){var h=this.each(function(){this._animateNumberSetter=b.numberStep}),f=a.complete;a.complete=function(){h.each(function(){delete this._animateNumberSetter});f&&f.apply(this,arguments)}}return e.animate.apply(e,g)}})(jQuery); diff --git a/jquery/jquery-animateNumber-0.0.13/package.json b/jquery/jquery-animateNumber-0.0.13/package.json new file mode 100644 index 0000000..cfdc56b --- /dev/null +++ b/jquery/jquery-animateNumber-0.0.13/package.json @@ -0,0 +1,31 @@ +{ + "name": "jquery.animate-number", + "version": "0.0.13", + "dependencies": { + "jquery": ">= 1.7.0" + }, + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-watch": "~0.5.3", + "grunt-closure-compiler": "~0.0.21" + }, + "description": "jQuery animate number plugin", + "repository": { + "type": "git", + "url": "https://github.com/aishek/jquery-animateNumber.git" + }, + "keywords": [ + "jquery", + "animate", + "number", + "jquery-plugin", + "ecosystem:jquery" + ], + "author": "Alexandr Borisov (aishek@gmail.com)", + "license": "MIT", + "main": "jquery.animateNumber.js", + "bugs": { + "url": "https://github.com/aishek/jquery-animateNumber/issues" + }, + "homepage": "https://github.com/aishek/jquery-animateNumber" +} diff --git a/jquery/plugins.php b/jquery/plugins.php new file mode 100644 index 0000000..5ddba00 --- /dev/null +++ b/jquery/plugins.php @@ -0,0 +1,6 @@ +<?php + +$plugins = array( + 'animatenumber' => array('files' => array('jquery-animateNumber-0.0.13/jquery.animateNumber.min.js')), + 'slick' => array('files' => array('slick/slick.js')), +); diff --git a/jquery/slick/Thumbs.db b/jquery/slick/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..c33016ed1a61af1331c2641d34e3ed774fd0e056 GIT binary patch literal 3072 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*1Oo3?K{^5@29pg7W|U|NkE>#=yYve-sR< z5cvE5|9?>YfiMdL0|SU2QXUv}EJYy@#E{RB&rrgkz~IV|$56sh#83&#%0$s(46N`x z4=)>V=nS}H`Df>XON`7Qc~D|wU|=v}Fl8`fh-WZiFlR_&NM%T4FlR7hNMlH5NMbN# zFk>)cNCS(4v|z(p3`~s30f0>nHn9s}M_`j7U5p(2Nw)>J4od6?#Tlp^2L%TxN>~{f zz-2x=0|NsG0|Nsm0|NsW0|Ns$0|NsO0|Nsu0|Nse0|Nv9Xjy?A>_e6<!N9-(iu)ZP zf`NgdUa;<O5L@Z?|2O_WU=Z+f^K@fiWCSG=P~Co;!I^=DnVE%|g`I_kos*rFos*lB zlarI1j|T+!1VJPZ50rv%(8>R|8Jrne*w}bDc*J;k#6<Y`_(VVip9n;oAcP`d$N>gH z4h97V1!hJi1|~s9W<kdPM;PQ87#LX@!2p(77@3$^SlQS)IJvn0A7R)kz`(@F%*@2X z%*x8b!oa{-%gDscz#_;hq-f~KCLEZ^u2d*u)Hrb=hqBYggQ7tfKd2Zd6*X~kiHS={ zN~x-;YiMejn3|beSXw!|xVpJ}czOkggocGjL`Eg2q^6~3WM&nYl$MoOR8}>&w6?W( zbaqXeJZ0*%=`&`|TC{k{(q+q6tX#Ee^OmjKw(r=v>(JpNM~@vpaq`rq%U7;myME*5 zt%r{uKY9A>`HPpYK7RWA<?FZaKYsoK`HPW(8SE<%0r44{zXTbW7@1f=@dEM}BU3p8 zBNMYA3#+0bn~-B5dt#xml2Idvh||P{8xL|S8wY(5O)9#`C8lEXQ1v6oYha%d=dmWT zd<ORz!e6%-c$gU(m;{*x8SEK;-zxj<Qgkq1!}HL@9f@6H^4g-dg;$sl9$#9seQk~N zwXO9n`z$~7cc=Vk=vwc3`F---HsSNFkMs3XxdcSD4*FeXSnP84%#QWZALCm~)_Moz z)*t@0;Bx69wp34JncWVIseX<U0Y;25Jew@nEqDDecjipfw^6sQ`3s!Q+V)-Ca5+!I zyBp@|Pfto(NPjS5TD7X7@IM2?yCw1*f3#&%W<I&JmO*_EqtNH`3m*SxxEi;P&p_hy zpI2;KJtqH^4V4YgDr{h1#_srM)zbYp7uQ>5PJQ}Sz443u^A8KSwo9c=mi`%d%k6W0 ziNfPo)nQwNSOZ07hdC^mD$DTl`1VgLH}*`hTyuZ(p0dln=D)79%unoN|M_nUV_9Y! zPvL}AWi8IvA#eYk*8XYaB$WSdg5@u{{|wL9s^7flosru9w}`=g$2<G;U)SoSv-D*! L|Gx=I9>kLXEg%-{ literal 0 HcmV?d00001 diff --git a/jquery/slick/ajax-loader.gif b/jquery/slick/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0e6e9760bc04861cc4771e327f22ed7962e0858 GIT binary patch literal 4178 zcmZ?wbhEHbRA5kG_{zZW|Nnmm28Lh1ejPb-<i(2@A3l7zaN$B-UEQo%v%Y=%_UzfS zKY#vAnl!1ct?kjHM>}@xSg>Hhn>TOPty_2J&K)~DyRfjZgoK2enwk|WR=j)n&dbXy zCntx8hlhcI;oP}%Cr+HWapQ)Lj!s-$oSdATkB`rW4I3D!3KaiIITxiSmZYXAlxLP? zC?sYjR^;R-rs!qnrR6gy{$yd`VqjoU{Lk&@8WQa67~pE8XTZ$Jz`&pbat0_67})+h zG!%HKh*`+E7oJq{6FTC!+*pHamJjDqp}Ar0tgIs5H31s^3#V9#Xo#>DZFIWWb3NW6 zLQ!Ap9FJ3lQ(jW7t9UvKLo-9ZU=bUeD@(d`PaFehez*%~G6M@cJCB#MK)Nt1Gczl9 zeqpX)K6eYpVs?RzoZ^#Rxh1zUa90=9@$O)rTXa<Lv<nme4vE^M3w&7x*q5cOU)R3y z!69!Z)@RRI&lfShdCSDT=Htii_SXFGT%SJGeEsp`>5DTf4{tgUySs4zk;cnQ5)>?* zU#Dp{sHh*dZ9m*qJK6b799!vZIo;nLdJ>AA0<Cv;i+#GgoOOK<FXu`B6W&UOk41KE zVt-<)r&gWyHe{v3VJD~jV?3!hKCC!mHmA*ob-ReeRVVw6I}EwDYD%nk-<`zc-6FO_ z0UD}|m_ev!BIQ(gQbmZxg}F6JgKyTE^NfOX!`c^}V~aMC;frsWVkJ{zrBpPrFvH>M zy~GuVHBWT%rSm&w#|z}M*Skuj*R?XR%E&4gv3R+#rVCW$u;+)naXND{Gt1ZIrn7Le zv2pU{i?}cea&d7xamy`bW-Dis;PYlvJjB4wx{YgvGs_-kz8&=^w+WWJatrTKxO{3+ z3KJXinF#LFm+J4=zqrBl?mg3+q7Uz%o%(+L^Y`C>xL*DGD|Vq+ef^yS6~0_*Au1}3 zO*OtOKYlx}zBQlclmegQvNa7(Iafqd8eVL;wRNI5OUi_>i`VS)-EwpzCMX>AiGJdx z#c}l9JbANDe#M(gKl?dNV;tV!ICY?a<3hftG+!>)f@^+?fvpj_vqT-PFXvG;Dzz&0 zFzSst9W+&Wa-sk<D48&Wl1r)=6qIUWF2^4}(2$ztbM%1l+^}|DF6L+z9=4W+Q>;t^ zG<b_X7Pm27i*IOM<awf#HC@=L!ihg$px#v>ovA#Ifm2FEw1}zCEj_$dAV1uNC)tUc zi%W1uOFAbLA0HD-zO;*~vaIZU2FaydtYzE^UarDonGAW`WJO$=c5~I$vnriX?)2f@ zeK193n+*F+A8uBz6%lN*N|i-r^*da-r+=9Ky8h#bC1-a(NjdZ5@7eQT{%BT&`ya3| zVtFkqvuT6pVYTaD3=`P|x*Ir_D*d?_>h(yYaB0<F&h6UG`?4hiXT~TgG|%nct#zy< zDC=Moi~qY?=amOe3Y#lgF@7j!`IO?Srm&DlG)SviNqOl!-QFu7R|@plw)(I(Tzz$I zec*hfVyhHwhC;ccVOv+Ncy<|<ESWLGQjd+<vGAmc821UMix*SWL?o3;6lACI^=Abx z2+(M~t#_c%V#<-D9+flXl=ym$V?4rCE(AKU<uX_Mr*botGV!wW6fjjeai<2AGUtZ4 z2njh);S!t_&c)5m%DOC9z=c^<L`2wGGL>sZ$s{Khj#y#o^&-;ATk6_4dH0JZhHc3T z6<;qUP#?N1ty)-wm!*xNvu&df_r%8&?^Q>8yyQE4ct<F+?8i^CGH<qAuKw`(qs*fx zPw&VqkzSG6X=%a!Fs5*O3(r0+rY8-zj92p<&SRaS$}@eV4_nM)hnGKZ7&LG1_};NZ z#%NVY6U$O9K~78IWr8znr<Ab#oZxv}%f+&_;)&Uk^IH}$xW(ouZCr6w(RZgJtHIS3 zAv!M0v^KegNL*i6AW+E71Wk%87{RBbCDOg9$kRuN)!lL9ffzNBndwtFq<mJnu5i*4 znatRFkby<dt<U-Mg~estP9JBf(@|L=TORE0S;U<spUaf)#O)qZ#FrJ~BHz*DF4!IJ z!O%4~i!FwSot?#5(w&R7jJ4Z|Q!a%?U<tcG;!3WnawgTSJPX5CPEL?m!ppqQm7BFD zmxW#RNN(AAAMUQ3T~`x0+3r7JW7)a$ln<N8%U2>&Pgd?OfARXI)QwxW8yQ$0K3L{` zCzRpo?xb}m8u-|k=?Z>ub8N9zv?_T}@H*buonflQ0)>sv9gMDKmNt_eXEyNovGu&z z(RjjIX||Y-#{`FE%1Z1O9xaiZPx_izii?X{99VGH)hU`m=H#UO^LmyHW}+#V4E%x^ zLO(mcEeYk>;}WsOLikdS*80`Hw|P#9vp@rq6>mTWo(cg6WJG|<s>^EyRxMyU!CGKg zBs1yk%xzJxWxG$_xBNb%hPz)diz&^C+dZ=`Jk^cMxs6M(rK>imKhs%Ko|(Clp|IVL zfwiSo(vOpEHZxnIducJZ!YX+dpDwQH37cl~E%fG&UE<BjtZ>L@U&35h?&fpNCqtR| zu3Y7dU3c@iHy``G`|P|oZ=O!L``{k$+4C2w7G1l#^US-g@4|1pu!#sf^<v7I@GN41 zgX3Z5lp6)E!A=Rxj$C39f;&YyCvRX>l;JQ8c&Ny%v~HSj)C7ftOzg5&9STg2%m+Kw zX3JP@c6B+$D6Hra(7g8iG*c!StCoW2&phPp8Tgj8IEXMDSk&Fp^WuP`oWv57#Y_?t zJ}s8hh+H7F=)yvm%V9sx@jZO3#{msVHfo2YD`zDGG$<!z=H+-e!^4p~wms3kv}*ap zMb2GZGZNPJ`7G<sYGa+htEzu{^P%Rw3CmbdoJ?7@YP}CD^TkUS&zw2uec|#Y?!$+U zhBBRebp8JM{S4vPUHI6UUnS3K%;I2Y=VjZzc26;@z*lw-8G|6z&db`&VjLWW2OivK zR$7%4m{fj%k&#P8N<i|$0=bE9d-WJ4E-XCEz`$$psMz>H^Q>S`k6A9u8=G2-%fe3D za569*({6um!h6$l2@@;twgW!|okBVodxYv7Pa17e@mG}Ah&g)liq`e%G8P<HgkdR> zeei@|)8QklPVOvDIdyK;dY`kWxQ`#%fA!i?=i8U|GlXAsWo72O>p!b8OOE+1%l5T< z&ak~@mfP&Kagr0OBC{8tK!VnXh4)yLR^{ZrxNwkxkwbt(#G+sUiy-^g4wF|;8x&a? z*fatR7#6U&vir(t1UNS;o|>S1-o&Ee!R!f)Jp3Guo<av0jJj;=dtV%26h5!W!)GF} zoQ27m!?};E(Bb3Z^+K{v0u!}Z4lxRtbr<lSR%vA8egB1p5t<A+27NH{-Pq5{F2j6g zb%KDhtgLeJ+|#aXA}?h{*ot?!OD>ZBq^#=1DfUWK^Fd=5gYQ#@C65ad#F)86)I=l< z6hvGFT#^J6H!Qp@z$9SKP*Cu|!CXKj{qN?jDa<ZR%HCzs4i^uvSNx#iAmDUK#ow^Y zAU|xu0!4rSeg?aMJI9_d9$~+e!Z*{x;oy2k5gh?buOkN<bj-U8c(qqJGEYrtVt|Gs zCj)xJ8@YZVqgW&>GyCu{A3nm&w?Do4RFI79x%09D`%_k}I(y;VrK&4exegsYe7uVL z^r^irEc>5_atcVX6$fnd;TIJV5iOp((@R+TyNH?3jON!KY=JxsVG;&xjXTtr9LtDO zeKL=Yqfbu8!oi_|nVm^bu+!Crsky|ND`!erLd2}#MN%spH+)=r+CE|eXW@p4iYv5d zGl=YEI{d(aSxcAw%%zqy2iz*0CY?L<nfnMMOH6~?)8)piuC3eN#v3aH%gkI<3O@k> zS4g!23O_bkS!HIIuG*kBE>L;s#Hu(^R)x=*HO-k@(vLf~-Bmzl5&P_{bzFigmPs#C zDc;`a!zUs;C993qub8ch;gl;2+oj8FEN9c1Zr);$61jI@g#T=c`%|vF5AHpxdh(3x z;+0F+s<>}`J0ElQM<^3B@6xOVEXhd?2OF7ro*fZf+``b(%&u^T`SPk5wpe}zBL>Bk z#`dVZu-=y;=_d}dF`w~~Fi<$y<i>5(7_y|{L_52}Z{CDw$EU6{a?9e`Fy#^Zfz{az zTpL&-LMG~&%12mfaxJ)Q%A}(nbo8>$VFvz^fYQpUUacU5npv!{%*>4|7)?Yvniemx zNY#>@D-hzPqak!nY02eAp2b~S41alq-DUlx*PfHPdz7(KdCB+wgbEjt6u#^j26w?c zetuWJ6p{8!2F?y=&PE1d5fM=~7xt6|Ou^jlxwV4so>Rr<iioo~v8ph8aZ9e{j$7f% zFSS8nR^nbR!7LX}o(<v^$BuZjNQ*4UTh6++Lb!?HmMbgYqsM$JE0(@k%D~J1_8t4R z=kA|Bzj^=mV_wFW6;B>NOB7q;{GHcpdsCR0g#<%^=ah^~c03Xv82jgXy9!CnusFcr z5_8N*<@S+}&TWcHQ#mdy&5|?h<J%JHv`OJ|Q!v+=vmp*H2U|>2Eav}sX=*ficAV!Q zl~Xt0@+`2QqLp}LbC-IEY3OXNxl7p2y0>%rS@n8#=Um>XeBLPWsxAkEHK+#-#sIp& B1&#m! literal 0 HcmV?d00001 diff --git a/jquery/slick/config.rb b/jquery/slick/config.rb new file mode 100644 index 0000000..81f5ae3 --- /dev/null +++ b/jquery/slick/config.rb @@ -0,0 +1,10 @@ +css_dir = "." +sass_dir = "." +images_dir = "." +fonts_dir = "fonts" +relative_assets = true + +output_style = :compact +line_comments = false + +preferred_syntax = :scss \ No newline at end of file diff --git a/jquery/slick/fonts/slick.eot b/jquery/slick/fonts/slick.eot new file mode 100644 index 0000000000000000000000000000000000000000..2cbab9ca97723bc24c50315a0a9bd155db4e0aa5 GIT binary patch literal 2048 zcmZSJU|>jLXJBAtU}69PCI(hc5DgNUzzAab1TZo%G$??WPz)AkU|{eUIPw81ghX*M z6f@*7WHKZ(WHT@@@G%52q%x#4lrrQnBr+5+FffQQgfXNt6fqPtWHRJ4<S{5P7&7QF z7%(s}pz34*Ie~$Jm!W}ynIXW<EyOqX;)(SP4D22Z3=A^vF0O72CJby04D1>V3=9hX z!TLu2-~Mi5U|@`3U|<MK&P^;(;&<K4z`%Hdfq^k8J+Zjp|9=K%1_pMJS2)shD%0#| zZ%bfcV76gkVA9D*O-x~6H2lrLz;K6wfx#>zBQ=rvDHAIL1EUB71A|INZb=237lRiA z1LFpeCvx(W6B)iSE@EI{)?r{^5XeoeC}8kraA#m(v;es$FEKZjRlV^L0|RRY0|R4T zL4I+G{$?X)1_rhp3=9me44^<{WMKGkM8H3u-{va=HzfSe7gp4R0uxNDGN>}%X1vY7 zz`y~G9&ng|Mf4!*8E=D40%?I^7O)6Ag9}s-NFgIw%mJ!|k%@tE0s|`p2cr*T8Uq7^ zJCy#)Aj#0ez<@{t4Pg5iKp_U!8j$9i!r;J=s5pu7!T$#gdW^UKgIovl3j;_WSP|G- zCI$voC<F;IGcbU{o<Roe4hDu824*lzhJl3v<SHJp4_O!(7!nnf6elQ7`u`uK4Vm|U z>HWv|O70bc^?@ZJ1S1>7ksux;$gdy_;=nM}bucbjG#gpEP&Kila%seKW9VVnz$nJR z1PXm{>XBg3VPLRlG&9j>R8v;sXJiu<k!NHFlVZk3W+Lot>}*QvYU*kx=4R$*M&e@P zADh_NnpoL6SY_GR!o%6vWLY`b-^<Dw8PpgU$;rYPg-vXHY)!1Ja;)r}ED;ebob0S} ztd~%ffYgE$1}r6m-J)u4W@@6(2q7U(5|L-b;TA>>BuB799kv7J29O0{R~4eTf)(O4 zY>r`shl?-+0|OS%Gv3B9oY4-`R|s>Q85kHvMcA|%mDJVjK|u@(P<A#EaWN1yHUfpJ zv5`EZm?+pbWpG$SL)+ZU7!=^<X5wOux4AePxY<}aHMFc`Wn_dzc(}QFM1*8yWR>I; zgxMHbnAMq?6ty)?^wo5vq(uY;MWm&4)bzE~HDy&fc(@t2H*j!qb91VzLv&d|jNs>! zVP;lmW@chh7ZHJIiG%3p7nD)uV1XuV9)@Yqe8tGX%D@9<Gcm9;C_&lG42leSP&Nw# zE5jTpo0Wl^VHcFm#=y#O36!&0I2jljxWIXyk%g0iiGhzn2rACZ;KZN>WwS7FF-(B6 zSsBC_7D3r;3|tJykgJj6oXq5G2K1^VC^fw_C$Wfu!3|uIlz{0XhIEEh1_cHqaHXQa zV8x(-WD<mL$Y8>t3&uta1`Hq`gIj)HiCcbAda8nvo`Hgu0@y|cD+NOnT@zg+149!A zBvTl`vJAK?var;m;>`R!1w%apY`PEyC8P+zET7oHbsrNW6C*Q2JA(^XVo_0kc~NG1 zMhPdFnUk7U0@eHfKLZmu^!XSV7$m@gAU-n#8v`Q)s62&~hG09+y}J&oyBNTA3j+g~ F1^_W!{XGBx literal 0 HcmV?d00001 diff --git a/jquery/slick/fonts/slick.svg b/jquery/slick/fonts/slick.svg new file mode 100644 index 0000000..b36a66a --- /dev/null +++ b/jquery/slick/fonts/slick.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by Fontastic.me</metadata> +<defs> +<font id="slick" horiz-adv-x="512"> +<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/> +<missing-glyph horiz-adv-x="512" /> + +<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/> +<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/> +<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/> +<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/> +</font></defs></svg> diff --git a/jquery/slick/fonts/slick.ttf b/jquery/slick/fonts/slick.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9d03461b653373f7cda3b4af104c6bca07f9892b GIT binary patch literal 1892 zcmZQzWME+6WoTevW(aU|3-Qgpcw#*R1G@(U1A~mai>n)h2?HAg1G@$T1A~Hpu)dN1 zx4)Yh7#JfM7#PBma}x`c_+9rhFfg8AU|>v2Pb@C@|DS=Gfq`9tfq{V|J*P6we)hHm z1_ovu1_mabjMT&w21di*3=9l+7#JALGBQ#VnV&MTGB7ZTFfcHvWaO4quz4|fF)%Q0 zU|?Vn%gIkpWcbFoh=GAwhk=1XAUCn1fWe!=oq>VT0_2{&#N1R?^~OUC46GRp42*dN z`Nbvrn~j(m7}#zwFfh1+{l>_^@ZpGne>}g<R|ak-1`s%3SWyqBRT)$nZ!_Koxt9SV z%>dE|7SV$UFy01<fONny3s{7m!3C-Zq>vFT<^Wa0$i%=nfq|8QgVBdEje&u|9ZG*? zkYs3KU|?ck<%Fng0Ncj^3Nf%iK$>d`g9AgN;v~ig{~s{uG2Z?Uavdn17(n{Kion(~ zF)*k?AxMy!fdLfu3^HJMFfhb0FoRh#3@i*FSMe}#FfcK&FfcGADkv#VP@MGtKS&!g z@Bh;KkMEV-D+KEUOF{@nHi#oZJVuaTK^Vk=VW{h1T(W33vUH(pVnyZBi08)8!?1x- zjDZOh`ry<f!JxyyV9#h~qR*(Nti;dACMqJ&$POmOjE&4h*xA_Gl+@MK)lAII%*~9% z#l$~0v9UF=vU9M?vayASv$4sta<IRbl`}G^F))&og)s`7*!b9*SXt#***RGvB3L-t zS>;$Sp(p{V1t$zxN(Q?{)!fX~M4u5tLYyQb&xpe<j2cLeV1+tt2h0s13&5@_L~#Wx z#A(<Z!w3%-VFm^UES_h)jbS*W9j31k<~TDjFp7$>X)`LRtJ#Bs7!;uFY$D=fAZTm^ z3RPnxc}6i&ux-lVu!e@VxtTF2z|GCX#TajMaWrtVv2to?S;@-C2#N4;bMuG@$;ikm z$tei4F|shLGcze_Ynte*=}1Y72nvcwOX;ZTYpH9>s&epfGj4C-;Ns@yR9A=SvVs`F z&nLsotj^5L#G)=D0?`r&(a$d^qsqYoP1rmP)1di^k%5(g2g+t*U}sQ*vY8na8S<cP z76w*^IZ!q$12@AiD4UIemEjU7XR~lJFfwp~^E@L9Cj%1$AA=B7oSDIiK?}-eVc=qz z0A;f>h%qdJve_887>+R%GvqL2G9)u(GcXkAWF}`bFa$BAGNdz<GUPBMG88c|1f`~z z<|Gy|Ft{<~GvqOpfaxNJbcR$01qLGqJq7~?1qLey1tgOod_x8k23;^VVlZF;@fh6l z^Ge+Ei_%jSjPwi?tQ5dDDp)BPn&_J78W|XxFd&%%b59sUDnk)NF+(QUegy_Yu$>HH zsYS(^`FRS4dIs2ZAqq-J5rA1fu`_^*G$uwSMrMX~1{bcxqN4orqRjM+5>7BPCpE1E rs`vkY1}1Rm^D!_mNPq=Fd}anV21ams3Mmc2cAR^69aMKQAlESfE_dz; literal 0 HcmV?d00001 diff --git a/jquery/slick/fonts/slick.woff b/jquery/slick/fonts/slick.woff new file mode 100644 index 0000000000000000000000000000000000000000..8ee99721bb81b59a5e1ceee1d3256b15f907d96b GIT binary patch literal 1380 zcmXT-cXRU(3GruOU`=7*W?*1oV2@#71ksq-+09LXfq{{Ofq_Ynfq`kZ{I4)RH@6U9 z1_ove1_lNx1_lP1+>0mHySuo$F)%QPfcOjy3<?ZJ3@rY^`bG>4%moY#3_%PG3<&`e z|JNnwCKfO-Fdt!HU<hDfU`$ftcG-}TnwY}Cz#_uHz@W##z+lF}X!tuLBQ=qMfyD)C zo(l6*CgzOXk_rX}mIMX{20jpG@nZ1GO{^$jU|<2+!N$PAz{bEDz>t@io65kzQo+E$ zaEF0`F^^Tf@lZj2aR~zhE69BUVD~XIFjma5ope55$Wi2Yx@NTclm%f5W{!_;W>=e6 zU7cMnyt!0VN00kRYm3v5t@ahWt)nA!CLEX*!6o4lu<qF6dXL}g6*qjVE<}2rQOV!; zb6@5B>3ht1xYz^_8|?l$S>!vTA>)w+>Gu{lOuzF{j_s=f^Fvt<_Q{GRAF}@IAE+1H zw>he^Nqqxn$nMz=FXEWCzE=;h5UkkM-(;7@?|PBZYv0MIESl4+zVF)*sGk4x(6Z~f z&MgwHfq{&+?rY*j9M)gd|1x`~+ns5rkA;L@Oj&R|!1qt#Ijv=G2bfN8=;&O(u76$a z@mm%xR+}xeXPJ2NE}E%T_Sn2|nnv3rWfRxH5A*BZ6ly&BcW1*>-sq1v%?r)XX{C6p zw_J#NHAC&@1)ce3r#HCV-IU^b)V)2teV=mv%PseXPc5zSFL-<VcC}#hx-3(V!#P`{ zb<ccWV{(rF==mi5Y|aUcj_1NQU#;1x;d!)Z-l;V{xjd5I7U$=sw^uH=n6_`4{_5#h zSK73*)>zNxeb&tV{50z|-n$IUXSS`A{PBZ*wdAaIO<c2<ZPh+{X=TXttocuvJOWgf z`mKz97s~cyOT4t1+u4amZ0s^d?|ODEzE^PJJ%5|6mUZ$YhJSpgPlX)0V|Y7j>+H12 zCOTWWZ}h&qbn;b+jY&hR@;uqr8<7?+;{Ol)chgUdjrZiv)btDTyY(=a&*H)BOik5J zCEk}-{4#9ko@JVu3Qqs>cGbQ%(=~5eH<zdhONo8sx>oUCeoDLS9tMVrImrnL2`LOs z#qZbUGhBSmt^F#|gdwVueKSNZB_ZJfa}p<;KtfUii<6iE+eZlomNEu&kiN8}ggFNe zoH}su#o-yp4jg#Ew{*XehtU=T0|UbiMMe#d%*@Qn6M_;Nni@>5i?Fe`xg7QE;s0l! za3Oim-~VRJF1*Z-b2oUgvbiyspXTF+*q4xy){r2{=Ef$_!T3qyV2v0XyTaMS2M!)! zNijB1(bCZL3z+lezkP(P(EI<7e)GQ<y?eTS76W@v4$ljxE9^QU2F)|M(jG7{SnBeN zgWQ;skid{+z24w`McwT6Ja>F}6bkljSS07S+GvH*y|g{NPl^m0mNNcb#u)^$KP4ey z&)EY9792mqz~o@2%&e8b#9)xb_?C%*fq{vEK@|!iS)CQ6C%4Zw>#&1BtNqPM&UGFW zmA>9u>gXi2DrVUQ#-JVMX@W{lO;c<8LskYom9TW+n;`u3ZIz<yrVVGlx0!!t+wr)U z<-d^8N^bofNy3#UXBif0ov(h<6K$uwe#yS4K9{mf^A1gU&idWPCGOJ^vm&kY*-v`h z?UdGE`Ja@w;Q0yeGtTuPmB%g>hW&4tyyb4C1xJ+H-7>DLCld{?h)h{!{rA4Fc<jXq z?eV7{i@r6Pck5*7wJWZfWojy`!hG*NDUCe&>HECBlji)YJ@LJ|R;~K=vpOl?&?*0Y Z{xbBgGI9llUz!734^IXI14ADJD*y_Q8;<}0 literal 0 HcmV?d00001 diff --git a/jquery/slick/slick-theme.css b/jquery/slick/slick-theme.css new file mode 100644 index 0000000..1232fca --- /dev/null +++ b/jquery/slick/slick-theme.css @@ -0,0 +1,204 @@ +@charset 'UTF-8'; +/* Slider */ +.slick-loading .slick-list +{ + background: #fff url('./ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face +{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('./fonts/slick.eot'); + src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg'); +} +/* Arrows */ +.slick-prev, +.slick-next +{ + font-size: 0; + line-height: 0; + + position: absolute; + top: 50%; + + display: block; + + width: 20px; + height: 20px; + padding: 0; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + + cursor: pointer; + + color: transparent; + border: none; + outline: none; + background: transparent; +} +.slick-prev:hover, +.slick-prev:focus, +.slick-next:hover, +.slick-next:focus +{ + color: transparent; + outline: none; + background: transparent; +} +.slick-prev:hover:before, +.slick-prev:focus:before, +.slick-next:hover:before, +.slick-next:focus:before +{ + opacity: 1; +} +.slick-prev.slick-disabled:before, +.slick-next.slick-disabled:before +{ + opacity: .25; +} + +.slick-prev:before, +.slick-next:before +{ + font-family: 'slick'; + font-size: 20px; + line-height: 1; + + opacity: .75; + color: white; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev +{ + left: -25px; +} +[dir='rtl'] .slick-prev +{ + right: -25px; + left: auto; +} +.slick-prev:before +{ + content: '←'; +} +[dir='rtl'] .slick-prev:before +{ + content: '→'; +} + +.slick-next +{ + right: -25px; +} +[dir='rtl'] .slick-next +{ + right: auto; + left: -25px; +} +.slick-next:before +{ + content: '→'; +} +[dir='rtl'] .slick-next:before +{ + content: '←'; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + + display: inline-block; + + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + + cursor: pointer; +} +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-family: 'slick'; + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + left: 0; + + width: 20px; + height: 20px; + + content: '•'; + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} diff --git a/jquery/slick/slick-theme.less b/jquery/slick/slick-theme.less new file mode 100644 index 0000000..8f10758 --- /dev/null +++ b/jquery/slick/slick-theme.less @@ -0,0 +1,168 @@ +@charset "UTF-8"; + +// Default Variables + +@slick-font-path: "./fonts/"; +@slick-font-family: "slick"; +@slick-loader-path: "./"; +@slick-arrow-color: white; +@slick-dot-color: black; +@slick-dot-color-active: @slick-dot-color; +@slick-prev-character: "←"; +@slick-next-character: "→"; +@slick-dot-character: "•"; +@slick-dot-size: 6px; +@slick-opacity-default: 0.75; +@slick-opacity-on-hover: 1; +@slick-opacity-not-active: 0.25; + +/* Slider */ +.slick-loading .slick-list{ + background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('@{slick-font-path}slick.eot'); + src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg'); +} + +/* Arrows */ + +.slick-prev, +.slick-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + line-height: 0px; + font-size: 0px; + cursor: pointer; + background: transparent; + color: transparent; + top: 50%; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + padding: 0; + border: none; + outline: none; + &:hover, &:focus { + outline: none; + background: transparent; + color: transparent; + &:before { + opacity: @slick-opacity-on-hover; + } + } + &.slick-disabled:before { + opacity: @slick-opacity-not-active; + } +} + +.slick-prev:before, .slick-next:before { + font-family: @slick-font-family; + font-size: 20px; + line-height: 1; + color: @slick-arrow-color; + opacity: @slick-opacity-default; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev { + left: -25px; + &[dir="rtl"] { + left: auto; + right: -25px; + } + &:before { + content: @slick-prev-character; + &[dir="rtl"] { + content: @slick-next-character; + } + } +} + +.slick-next { + right: -25px; + &[dir="rtl"] { + left: -25px; + right: auto; + } + &:before { + content: @slick-next-character; + &[dir="rtl"] { + content: @slick-prev-character; + } + } +} + +/* Dots */ + +.slick-dotted .slick-slider { + margin-bottom: 30px; +} + +.slick-dots { + position: absolute; + bottom: -25px; + list-style: none; + display: block; + text-align: center; + padding: 0; + margin: 0; + width: 100%; + li { + position: relative; + display: inline-block; + height: 20px; + width: 20px; + margin: 0 5px; + padding: 0; + cursor: pointer; + button { + border: 0; + background: transparent; + display: block; + height: 20px; + width: 20px; + outline: none; + line-height: 0px; + font-size: 0px; + color: transparent; + padding: 5px; + cursor: pointer; + &:hover, &:focus { + outline: none; + &:before { + opacity: @slick-opacity-on-hover; + } + } + &:before { + position: absolute; + top: 0; + left: 0; + content: @slick-dot-character; + width: 20px; + height: 20px; + font-family: @slick-font-family; + font-size: @slick-dot-size; + line-height: 20px; + text-align: center; + color: @slick-dot-color; + opacity: @slick-opacity-not-active; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + &.slick-active button:before { + color: @slick-dot-color-active; + opacity: @slick-opacity-default; + } + } +} diff --git a/jquery/slick/slick-theme.scss b/jquery/slick/slick-theme.scss new file mode 100644 index 0000000..7fe63e1 --- /dev/null +++ b/jquery/slick/slick-theme.scss @@ -0,0 +1,194 @@ +@charset "UTF-8"; + +// Default Variables + +// Slick icon entity codes outputs the following +// "\2190" outputs ascii character "←" +// "\2192" outputs ascii character "→" +// "\2022" outputs ascii character "•" + +$slick-font-path: "./fonts/" !default; +$slick-font-family: "slick" !default; +$slick-loader-path: "./" !default; +$slick-arrow-color: white !default; +$slick-dot-color: black !default; +$slick-dot-color-active: $slick-dot-color !default; +$slick-prev-character: "\2190" !default; +$slick-next-character: "\2192" !default; +$slick-dot-character: "\2022" !default; +$slick-dot-size: 6px !default; +$slick-opacity-default: 0.75 !default; +$slick-opacity-on-hover: 1 !default; +$slick-opacity-not-active: 0.25 !default; + +@function slick-image-url($url) { + @if function-exists(image-url) { + @return image-url($url); + } + @else { + @return url($slick-loader-path + $url); + } +} + +@function slick-font-url($url) { + @if function-exists(font-url) { + @return font-url($url); + } + @else { + @return url($slick-font-path + $url); + } +} + +/* Slider */ + +.slick-list { + .slick-loading & { + background: #fff slick-image-url("ajax-loader.gif") center center no-repeat; + } +} + +/* Icons */ +@if $slick-font-family == "slick" { + @font-face { + font-family: "slick"; + src: slick-font-url("slick.eot"); + src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg"); + font-weight: normal; + font-style: normal; + } +} + +/* Arrows */ + +.slick-prev, +.slick-next { + position: absolute; + display: block; + height: 20px; + width: 20px; + line-height: 0px; + font-size: 0px; + cursor: pointer; + background: transparent; + color: transparent; + top: 50%; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + padding: 0; + border: none; + outline: none; + &:hover, &:focus { + outline: none; + background: transparent; + color: transparent; + &:before { + opacity: $slick-opacity-on-hover; + } + } + &.slick-disabled:before { + opacity: $slick-opacity-not-active; + } + &:before { + font-family: $slick-font-family; + font-size: 20px; + line-height: 1; + color: $slick-arrow-color; + opacity: $slick-opacity-default; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +} + +.slick-prev { + left: -25px; + [dir="rtl"] & { + left: auto; + right: -25px; + } + &:before { + content: $slick-prev-character; + [dir="rtl"] & { + content: $slick-next-character; + } + } +} + +.slick-next { + right: -25px; + [dir="rtl"] & { + left: -25px; + right: auto; + } + &:before { + content: $slick-next-character; + [dir="rtl"] & { + content: $slick-prev-character; + } + } +} + +/* Dots */ + +.slick-dotted.slick-slider { + margin-bottom: 30px; +} + +.slick-dots { + position: absolute; + bottom: -25px; + list-style: none; + display: block; + text-align: center; + padding: 0; + margin: 0; + width: 100%; + li { + position: relative; + display: inline-block; + height: 20px; + width: 20px; + margin: 0 5px; + padding: 0; + cursor: pointer; + button { + border: 0; + background: transparent; + display: block; + height: 20px; + width: 20px; + outline: none; + line-height: 0px; + font-size: 0px; + color: transparent; + padding: 5px; + cursor: pointer; + &:hover, &:focus { + outline: none; + &:before { + opacity: $slick-opacity-on-hover; + } + } + &:before { + position: absolute; + top: 0; + left: 0; + content: $slick-dot-character; + width: 20px; + height: 20px; + font-family: $slick-font-family; + font-size: $slick-dot-size; + line-height: 20px; + text-align: center; + color: $slick-dot-color; + opacity: $slick-opacity-not-active; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } + &.slick-active button:before { + color: $slick-dot-color-active; + opacity: $slick-opacity-default; + } + } +} diff --git a/jquery/slick/slick.css b/jquery/slick/slick.css new file mode 100644 index 0000000..573b16e --- /dev/null +++ b/jquery/slick/slick.css @@ -0,0 +1,200 @@ +/* Slider */ +.slick-slider +{ + position: relative; + + display: block; + box-sizing: border-box; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + -webkit-touch-callout: none; + -khtml-user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} + +.slick-list +{ + position: relative; + + display: block; + overflow: hidden; + + margin: 0; + padding: 0; +} +.slick-list:focus +{ + outline: none; +} +.slick-list.dragging +{ + cursor: pointer; + cursor: hand; +} + +.slick-slider .slick-track, +.slick-slider .slick-list +{ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track +{ + position: relative; + top: 0; + left: 0; + + display: block; +} +.slick-track:before, +.slick-track:after +{ + display: table; + + content: ''; +} +.slick-track:after +{ + clear: both; +} +.slick-loading .slick-track +{ + visibility: hidden; +} + +.slick-slide +{ + display: none; + float: left; + + height: 100%; + min-height: 1px; +} +[dir='rtl'] .slick-slide +{ + float: right; +} +.slick-slide img +{ + display: block; +} +.slick-slide.slick-loading img +{ + display: none; +} +.slick-slide.dragging img +{ + pointer-events: none; +} +.slick-initialized .slick-slide +{ + display: block; +} +.slick-loading .slick-slide +{ + visibility: hidden; +} +.slick-vertical .slick-slide +{ + display: block; + + height: auto; + + border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + display: inline-block; + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + cursor: pointer; +} +.slick-dots li button!important +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + cursor: pointer; + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + left: 0; + + width: 20px; + height: 20px; + + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} diff --git a/jquery/slick/slick.js b/jquery/slick/slick.js new file mode 100644 index 0000000..5394604 --- /dev/null +++ b/jquery/slick/slick.js @@ -0,0 +1,2892 @@ +/* + _ _ _ _ + ___| (_) ___| | __ (_)___ +/ __| | |/ __| |/ / | / __| +\__ \ | | (__| < _ | \__ \ +|___/_|_|\___|_|\_(_)/ |___/ + |__/ + + Version: 1.6.0 + Author: Ken Wheeler + Website: http://kenwheeler.github.io + Docs: http://kenwheeler.github.io/slick + Repo: http://github.com/kenwheeler/slick + Issues: http://github.com/kenwheeler/slick/issues + + */ +/* global window, document, define, jQuery, setInterval, clearInterval */ +(function(factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports !== 'undefined') { + module.exports = factory(require('jquery')); + } else { + factory(jQuery); + } + +}(function($) { + 'use strict'; + var Slick = window.Slick || {}; + + Slick = (function() { + + var instanceUid = 0; + + function Slick(element, settings) { + + var _ = this, dataSettings; + + _.defaults = { + accessibility: true, + adaptiveHeight: false, + appendArrows: $(element), + appendDots: $(element), + arrows: true, + asNavFor: null, + prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>', + nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>', + autoplay: false, + autoplaySpeed: 3000, + centerMode: false, + centerPadding: '50px', + cssEase: 'ease', + customPaging: function(slider, i) { + return $('<button type="button" data-role="none" role="button" tabindex="0" />').text(i + 1); + }, + dots: false, + dotsClass: 'slick-dots', + draggable: true, + easing: 'linear', + edgeFriction: 0.35, + fade: false, + focusOnSelect: false, + infinite: true, + initialSlide: 0, + lazyLoad: 'ondemand', + mobileFirst: false, + pauseOnHover: true, + pauseOnFocus: true, + pauseOnDotsHover: false, + respondTo: 'window', + responsive: null, + rows: 1, + rtl: false, + slide: '', + slidesPerRow: 1, + slidesToShow: 1, + slidesToScroll: 1, + speed: 500, + swipe: true, + swipeToSlide: false, + touchMove: true, + touchThreshold: 5, + useCSS: true, + useTransform: true, + variableWidth: false, + vertical: false, + verticalSwiping: false, + waitForAnimate: true, + zIndex: 1000 + }; + + _.initials = { + animating: false, + dragging: false, + autoPlayTimer: null, + currentDirection: 0, + currentLeft: null, + currentSlide: 0, + direction: 1, + $dots: null, + listWidth: null, + listHeight: null, + loadIndex: 0, + $nextArrow: null, + $prevArrow: null, + slideCount: null, + slideWidth: null, + $slideTrack: null, + $slides: null, + sliding: false, + slideOffset: 0, + swipeLeft: null, + $list: null, + touchObject: {}, + transformsEnabled: false, + unslicked: false + }; + + $.extend(_, _.initials); + + _.activeBreakpoint = null; + _.animType = null; + _.animProp = null; + _.breakpoints = []; + _.breakpointSettings = []; + _.cssTransitions = false; + _.focussed = false; + _.interrupted = false; + _.hidden = 'hidden'; + _.paused = true; + _.positionProp = null; + _.respondTo = null; + _.rowCount = 1; + _.shouldClick = true; + _.$slider = $(element); + _.$slidesCache = null; + _.transformType = null; + _.transitionType = null; + _.visibilityChange = 'visibilitychange'; + _.windowWidth = 0; + _.windowTimer = null; + + dataSettings = $(element).data('slick') || {}; + + _.options = $.extend({}, _.defaults, settings, dataSettings); + + _.currentSlide = _.options.initialSlide; + + _.originalSettings = _.options; + + if (typeof document.mozHidden !== 'undefined') { + _.hidden = 'mozHidden'; + _.visibilityChange = 'mozvisibilitychange'; + } else if (typeof document.webkitHidden !== 'undefined') { + _.hidden = 'webkitHidden'; + _.visibilityChange = 'webkitvisibilitychange'; + } + + _.autoPlay = $.proxy(_.autoPlay, _); + _.autoPlayClear = $.proxy(_.autoPlayClear, _); + _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); + _.changeSlide = $.proxy(_.changeSlide, _); + _.clickHandler = $.proxy(_.clickHandler, _); + _.selectHandler = $.proxy(_.selectHandler, _); + _.setPosition = $.proxy(_.setPosition, _); + _.swipeHandler = $.proxy(_.swipeHandler, _); + _.dragHandler = $.proxy(_.dragHandler, _); + _.keyHandler = $.proxy(_.keyHandler, _); + + _.instanceUid = instanceUid++; + + // A simple way to check for HTML strings + // Strict HTML recognition (must start with <) + // Extracted from jQuery v1.11 source + _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; + + + _.registerBreakpoints(); + _.init(true); + + } + + return Slick; + + }()); + + Slick.prototype.activateADA = function() { + var _ = this; + + _.$slideTrack.find('.slick-active').attr({ + 'aria-hidden': 'false' + }).find('a, input, button, select').attr({ + 'tabindex': '0' + }); + + }; + + Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { + + var _ = this; + + if (typeof(index) === 'boolean') { + addBefore = index; + index = null; + } else if (index < 0 || (index >= _.slideCount)) { + return false; + } + + _.unload(); + + if (typeof(index) === 'number') { + if (index === 0 && _.$slides.length === 0) { + $(markup).appendTo(_.$slideTrack); + } else if (addBefore) { + $(markup).insertBefore(_.$slides.eq(index)); + } else { + $(markup).insertAfter(_.$slides.eq(index)); + } + } else { + if (addBefore === true) { + $(markup).prependTo(_.$slideTrack); + } else { + $(markup).appendTo(_.$slideTrack); + } + } + + _.$slides = _.$slideTrack.children(this.options.slide); + + _.$slideTrack.children(this.options.slide).detach(); + + _.$slideTrack.append(_.$slides); + + _.$slides.each(function(index, element) { + $(element).attr('data-slick-index', index); + }); + + _.$slidesCache = _.$slides; + + _.reinit(); + + }; + + Slick.prototype.animateHeight = function() { + var _ = this; + if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { + var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); + _.$list.animate({ + height: targetHeight + }, _.options.speed); + } + }; + + Slick.prototype.animateSlide = function(targetLeft, callback) { + + var animProps = {}, + _ = this; + + _.animateHeight(); + + if (_.options.rtl === true && _.options.vertical === false) { + targetLeft = -targetLeft; + } + if (_.transformsEnabled === false) { + if (_.options.vertical === false) { + _.$slideTrack.animate({ + left: targetLeft + }, _.options.speed, _.options.easing, callback); + } else { + _.$slideTrack.animate({ + top: targetLeft + }, _.options.speed, _.options.easing, callback); + } + + } else { + + if (_.cssTransitions === false) { + if (_.options.rtl === true) { + _.currentLeft = -(_.currentLeft); + } + $({ + animStart: _.currentLeft + }).animate({ + animStart: targetLeft + }, { + duration: _.options.speed, + easing: _.options.easing, + step: function(now) { + now = Math.ceil(now); + if (_.options.vertical === false) { + animProps[_.animType] = 'translate(' + + now + 'px, 0px)'; + _.$slideTrack.css(animProps); + } else { + animProps[_.animType] = 'translate(0px,' + + now + 'px)'; + _.$slideTrack.css(animProps); + } + }, + complete: function() { + if (callback) { + callback.call(); + } + } + }); + + } else { + + _.applyTransition(); + targetLeft = Math.ceil(targetLeft); + + if (_.options.vertical === false) { + animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; + } else { + animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; + } + _.$slideTrack.css(animProps); + + if (callback) { + setTimeout(function() { + + _.disableTransition(); + + callback.call(); + }, _.options.speed); + } + + } + + } + + }; + + Slick.prototype.getNavTarget = function() { + + var _ = this, + asNavFor = _.options.asNavFor; + + if ( asNavFor && asNavFor !== null ) { + asNavFor = $(asNavFor).not(_.$slider); + } + + return asNavFor; + + }; + + Slick.prototype.asNavFor = function(index) { + + var _ = this, + asNavFor = _.getNavTarget(); + + if ( asNavFor !== null && typeof asNavFor === 'object' ) { + asNavFor.each(function() { + var target = $(this).slick('getSlick'); + if(!target.unslicked) { + target.slideHandler(index, true); + } + }); + } + + }; + + Slick.prototype.applyTransition = function(slide) { + + var _ = this, + transition = {}; + + if (_.options.fade === false) { + transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; + } else { + transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; + } + + if (_.options.fade === false) { + _.$slideTrack.css(transition); + } else { + _.$slides.eq(slide).css(transition); + } + + }; + + Slick.prototype.autoPlay = function() { + + var _ = this; + + _.autoPlayClear(); + + if ( _.slideCount > _.options.slidesToShow ) { + _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed ); + } + + }; + + Slick.prototype.autoPlayClear = function() { + + var _ = this; + + if (_.autoPlayTimer) { + clearInterval(_.autoPlayTimer); + } + + }; + + Slick.prototype.autoPlayIterator = function() { + + var _ = this, + slideTo = _.currentSlide + _.options.slidesToScroll; + + if ( !_.paused && !_.interrupted && !_.focussed ) { + + if ( _.options.infinite === false ) { + + if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) { + _.direction = 0; + } + + else if ( _.direction === 0 ) { + + slideTo = _.currentSlide - _.options.slidesToScroll; + + if ( _.currentSlide - 1 === 0 ) { + _.direction = 1; + } + + } + + } + + _.slideHandler( slideTo ); + + } + + }; + + Slick.prototype.buildArrows = function() { + + var _ = this; + + if (_.options.arrows === true ) { + + _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow'); + _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow'); + + if( _.slideCount > _.options.slidesToShow ) { + + _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); + _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); + + if (_.htmlExpr.test(_.options.prevArrow)) { + _.$prevArrow.prependTo(_.options.appendArrows); + } + + if (_.htmlExpr.test(_.options.nextArrow)) { + _.$nextArrow.appendTo(_.options.appendArrows); + } + + if (_.options.infinite !== true) { + _.$prevArrow + .addClass('slick-disabled') + .attr('aria-disabled', 'true'); + } + + } else { + + _.$prevArrow.add( _.$nextArrow ) + + .addClass('slick-hidden') + .attr({ + 'aria-disabled': 'true', + 'tabindex': '-1' + }); + + } + + } + + }; + + Slick.prototype.buildDots = function() { + + var _ = this, + i, dot; + + if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { + + _.$slider.addClass('slick-dotted'); + + dot = $('<ul />').addClass(_.options.dotsClass); + + for (i = 0; i <= _.getDotCount(); i += 1) { + dot.append($('<li />').append(_.options.customPaging.call(this, _, i))); + } + + _.$dots = dot.appendTo(_.options.appendDots); + + _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false'); + + } + + }; + + Slick.prototype.buildOut = function() { + + var _ = this; + + _.$slides = + _.$slider + .children( _.options.slide + ':not(.slick-cloned)') + .addClass('slick-slide'); + + _.slideCount = _.$slides.length; + + _.$slides.each(function(index, element) { + $(element) + .attr('data-slick-index', index) + .data('originalStyling', $(element).attr('style') || ''); + }); + + _.$slider.addClass('slick-slider'); + + _.$slideTrack = (_.slideCount === 0) ? + $('<div class="slick-track"/>').appendTo(_.$slider) : + _.$slides.wrapAll('<div class="slick-track"/>').parent(); + + _.$list = _.$slideTrack.wrap( + '<div aria-live="polite" class="slick-list"/>').parent(); + _.$slideTrack.css('opacity', 0); + + if (_.options.centerMode === true || _.options.swipeToSlide === true) { + _.options.slidesToScroll = 1; + } + + $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); + + _.setupInfinite(); + + _.buildArrows(); + + _.buildDots(); + + _.updateDots(); + + + _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); + + if (_.options.draggable === true) { + _.$list.addClass('draggable'); + } + + }; + + Slick.prototype.buildRows = function() { + + var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection; + + newSlides = document.createDocumentFragment(); + originalSlides = _.$slider.children(); + + if(_.options.rows > 1) { + + slidesPerSection = _.options.slidesPerRow * _.options.rows; + numOfSlides = Math.ceil( + originalSlides.length / slidesPerSection + ); + + for(a = 0; a < numOfSlides; a++){ + var slide = document.createElement('div'); + for(b = 0; b < _.options.rows; b++) { + var row = document.createElement('div'); + for(c = 0; c < _.options.slidesPerRow; c++) { + var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); + if (originalSlides.get(target)) { + row.appendChild(originalSlides.get(target)); + } + } + slide.appendChild(row); + } + newSlides.appendChild(slide); + } + + _.$slider.empty().append(newSlides); + _.$slider.children().children().children() + .css({ + 'width':(100 / _.options.slidesPerRow) + '%', + 'display': 'inline-block' + }); + + } + + }; + + Slick.prototype.checkResponsive = function(initial, forceUpdate) { + + var _ = this, + breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; + var sliderWidth = _.$slider.width(); + var windowWidth = window.innerWidth || $(window).width(); + + if (_.respondTo === 'window') { + respondToWidth = windowWidth; + } else if (_.respondTo === 'slider') { + respondToWidth = sliderWidth; + } else if (_.respondTo === 'min') { + respondToWidth = Math.min(windowWidth, sliderWidth); + } + + if ( _.options.responsive && + _.options.responsive.length && + _.options.responsive !== null) { + + targetBreakpoint = null; + + for (breakpoint in _.breakpoints) { + if (_.breakpoints.hasOwnProperty(breakpoint)) { + if (_.originalSettings.mobileFirst === false) { + if (respondToWidth < _.breakpoints[breakpoint]) { + targetBreakpoint = _.breakpoints[breakpoint]; + } + } else { + if (respondToWidth > _.breakpoints[breakpoint]) { + targetBreakpoint = _.breakpoints[breakpoint]; + } + } + } + } + + if (targetBreakpoint !== null) { + if (_.activeBreakpoint !== null) { + if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { + _.activeBreakpoint = + targetBreakpoint; + if (_.breakpointSettings[targetBreakpoint] === 'unslick') { + _.unslick(targetBreakpoint); + } else { + _.options = $.extend({}, _.originalSettings, + _.breakpointSettings[ + targetBreakpoint]); + if (initial === true) { + _.currentSlide = _.options.initialSlide; + } + _.refresh(initial); + } + triggerBreakpoint = targetBreakpoint; + } + } else { + _.activeBreakpoint = targetBreakpoint; + if (_.breakpointSettings[targetBreakpoint] === 'unslick') { + _.unslick(targetBreakpoint); + } else { + _.options = $.extend({}, _.originalSettings, + _.breakpointSettings[ + targetBreakpoint]); + if (initial === true) { + _.currentSlide = _.options.initialSlide; + } + _.refresh(initial); + } + triggerBreakpoint = targetBreakpoint; + } + } else { + if (_.activeBreakpoint !== null) { + _.activeBreakpoint = null; + _.options = _.originalSettings; + if (initial === true) { + _.currentSlide = _.options.initialSlide; + } + _.refresh(initial); + triggerBreakpoint = targetBreakpoint; + } + } + + // only trigger breakpoints during an actual break. not on initialize. + if( !initial && triggerBreakpoint !== false ) { + _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); + } + } + + }; + + Slick.prototype.changeSlide = function(event, dontAnimate) { + + var _ = this, + $target = $(event.currentTarget), + indexOffset, slideOffset, unevenOffset; + + // If target is a link, prevent default action. + if($target.is('a')) { + event.preventDefault(); + } + + // If target is not the <li> element (ie: a child), find the <li>. + if(!$target.is('li')) { + $target = $target.closest('li'); + } + + unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); + indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; + + switch (event.data.message) { + + case 'previous': + slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; + if (_.slideCount > _.options.slidesToShow) { + _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); + } + break; + + case 'next': + slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; + if (_.slideCount > _.options.slidesToShow) { + _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); + } + break; + + case 'index': + var index = event.data.index === 0 ? 0 : + event.data.index || $target.index() * _.options.slidesToScroll; + + _.slideHandler(_.checkNavigable(index), false, dontAnimate); + $target.children().trigger('focus'); + break; + + default: + return; + } + + }; + + Slick.prototype.checkNavigable = function(index) { + + var _ = this, + navigables, prevNavigable; + + navigables = _.getNavigableIndexes(); + prevNavigable = 0; + if (index > navigables[navigables.length - 1]) { + index = navigables[navigables.length - 1]; + } else { + for (var n in navigables) { + if (index < navigables[n]) { + index = prevNavigable; + break; + } + prevNavigable = navigables[n]; + } + } + + return index; + }; + + Slick.prototype.cleanUpEvents = function() { + + var _ = this; + + if (_.options.dots && _.$dots !== null) { + + $('li', _.$dots) + .off('click.slick', _.changeSlide) + .off('mouseenter.slick', $.proxy(_.interrupt, _, true)) + .off('mouseleave.slick', $.proxy(_.interrupt, _, false)); + + } + + _.$slider.off('focus.slick blur.slick'); + + if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { + _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); + _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); + } + + _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); + _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); + _.$list.off('touchend.slick mouseup.slick', _.swipeHandler); + _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); + + _.$list.off('click.slick', _.clickHandler); + + $(document).off(_.visibilityChange, _.visibility); + + _.cleanUpSlideEvents(); + + if (_.options.accessibility === true) { + _.$list.off('keydown.slick', _.keyHandler); + } + + if (_.options.focusOnSelect === true) { + $(_.$slideTrack).children().off('click.slick', _.selectHandler); + } + + $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); + + $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); + + $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); + + $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); + $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition); + + }; + + Slick.prototype.cleanUpSlideEvents = function() { + + var _ = this; + + _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true)); + _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false)); + + }; + + Slick.prototype.cleanUpRows = function() { + + var _ = this, originalSlides; + + if(_.options.rows > 1) { + originalSlides = _.$slides.children().children(); + originalSlides.removeAttr('style'); + _.$slider.empty().append(originalSlides); + } + + }; + + Slick.prototype.clickHandler = function(event) { + + var _ = this; + + if (_.shouldClick === false) { + event.stopImmediatePropagation(); + event.stopPropagation(); + event.preventDefault(); + } + + }; + + Slick.prototype.destroy = function(refresh) { + + var _ = this; + + _.autoPlayClear(); + + _.touchObject = {}; + + _.cleanUpEvents(); + + $('.slick-cloned', _.$slider).detach(); + + if (_.$dots) { + _.$dots.remove(); + } + + + if ( _.$prevArrow && _.$prevArrow.length ) { + + _.$prevArrow + .removeClass('slick-disabled slick-arrow slick-hidden') + .removeAttr('aria-hidden aria-disabled tabindex') + .css('display',''); + + if ( _.htmlExpr.test( _.options.prevArrow )) { + _.$prevArrow.remove(); + } + } + + if ( _.$nextArrow && _.$nextArrow.length ) { + + _.$nextArrow + .removeClass('slick-disabled slick-arrow slick-hidden') + .removeAttr('aria-hidden aria-disabled tabindex') + .css('display',''); + + if ( _.htmlExpr.test( _.options.nextArrow )) { + _.$nextArrow.remove(); + } + + } + + + if (_.$slides) { + + _.$slides + .removeClass('slick-slide slick-active slick-center slick-visible slick-current') + .removeAttr('aria-hidden') + .removeAttr('data-slick-index') + .each(function(){ + $(this).attr('style', $(this).data('originalStyling')); + }); + + _.$slideTrack.children(this.options.slide).detach(); + + _.$slideTrack.detach(); + + _.$list.detach(); + + _.$slider.append(_.$slides); + } + + _.cleanUpRows(); + + _.$slider.removeClass('slick-slider'); + _.$slider.removeClass('slick-initialized'); + _.$slider.removeClass('slick-dotted'); + + _.unslicked = true; + + if(!refresh) { + _.$slider.trigger('destroy', [_]); + } + + }; + + Slick.prototype.disableTransition = function(slide) { + + var _ = this, + transition = {}; + + transition[_.transitionType] = ''; + + if (_.options.fade === false) { + _.$slideTrack.css(transition); + } else { + _.$slides.eq(slide).css(transition); + } + + }; + + Slick.prototype.fadeSlide = function(slideIndex, callback) { + + var _ = this; + + if (_.cssTransitions === false) { + + _.$slides.eq(slideIndex).css({ + zIndex: _.options.zIndex + }); + + _.$slides.eq(slideIndex).animate({ + opacity: 1 + }, _.options.speed, _.options.easing, callback); + + } else { + + _.applyTransition(slideIndex); + + _.$slides.eq(slideIndex).css({ + opacity: 1, + zIndex: _.options.zIndex + }); + + if (callback) { + setTimeout(function() { + + _.disableTransition(slideIndex); + + callback.call(); + }, _.options.speed); + } + + } + + }; + + Slick.prototype.fadeSlideOut = function(slideIndex) { + + var _ = this; + + if (_.cssTransitions === false) { + + _.$slides.eq(slideIndex).animate({ + opacity: 0, + zIndex: _.options.zIndex - 2 + }, _.options.speed, _.options.easing); + + } else { + + _.applyTransition(slideIndex); + + _.$slides.eq(slideIndex).css({ + opacity: 0, + zIndex: _.options.zIndex - 2 + }); + + } + + }; + + Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { + + var _ = this; + + if (filter !== null) { + + _.$slidesCache = _.$slides; + + _.unload(); + + _.$slideTrack.children(this.options.slide).detach(); + + _.$slidesCache.filter(filter).appendTo(_.$slideTrack); + + _.reinit(); + + } + + }; + + Slick.prototype.focusHandler = function() { + + var _ = this; + + _.$slider + .off('focus.slick blur.slick') + .on('focus.slick blur.slick', + '*:not(.slick-arrow)', function(event) { + + event.stopImmediatePropagation(); + var $sf = $(this); + + setTimeout(function() { + + if( _.options.pauseOnFocus ) { + _.focussed = $sf.is(':focus'); + _.autoPlay(); + } + + }, 0); + + }); + }; + + Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { + + var _ = this; + return _.currentSlide; + + }; + + Slick.prototype.getDotCount = function() { + + var _ = this; + + var breakPoint = 0; + var counter = 0; + var pagerQty = 0; + + if (_.options.infinite === true) { + while (breakPoint < _.slideCount) { + ++pagerQty; + breakPoint = counter + _.options.slidesToScroll; + counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; + } + } else if (_.options.centerMode === true) { + pagerQty = _.slideCount; + } else if(!_.options.asNavFor) { + pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); + }else { + while (breakPoint < _.slideCount) { + ++pagerQty; + breakPoint = counter + _.options.slidesToScroll; + counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; + } + } + + return pagerQty - 1; + + }; + + Slick.prototype.getLeft = function(slideIndex) { + + var _ = this, + targetLeft, + verticalHeight, + verticalOffset = 0, + targetSlide; + + _.slideOffset = 0; + verticalHeight = _.$slides.first().outerHeight(true); + + if (_.options.infinite === true) { + if (_.slideCount > _.options.slidesToShow) { + _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; + verticalOffset = (verticalHeight * _.options.slidesToShow) * -1; + } + if (_.slideCount % _.options.slidesToScroll !== 0) { + if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { + if (slideIndex > _.slideCount) { + _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1; + verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; + } else { + _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; + verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; + } + } + } + } else { + if (slideIndex + _.options.slidesToShow > _.slideCount) { + _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; + verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; + } + } + + if (_.slideCount <= _.options.slidesToShow) { + _.slideOffset = 0; + verticalOffset = 0; + } + + if (_.options.centerMode === true && _.options.infinite === true) { + _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; + } else if (_.options.centerMode === true) { + _.slideOffset = 0; + _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); + } + + if (_.options.vertical === false) { + targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; + } else { + targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; + } + + if (_.options.variableWidth === true) { + + if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { + targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); + } else { + targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); + } + + if (_.options.rtl === true) { + if (targetSlide[0]) { + targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; + } else { + targetLeft = 0; + } + } else { + targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; + } + + if (_.options.centerMode === true) { + if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { + targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); + } else { + targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); + } + + if (_.options.rtl === true) { + if (targetSlide[0]) { + targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; + } else { + targetLeft = 0; + } + } else { + targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; + } + + targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; + } + } + + return targetLeft; + + }; + + Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { + + var _ = this; + + return _.options[option]; + + }; + + Slick.prototype.getNavigableIndexes = function() { + + var _ = this, + breakPoint = 0, + counter = 0, + indexes = [], + max; + + if (_.options.infinite === false) { + max = _.slideCount; + } else { + breakPoint = _.options.slidesToScroll * -1; + counter = _.options.slidesToScroll * -1; + max = _.slideCount * 2; + } + + while (breakPoint < max) { + indexes.push(breakPoint); + breakPoint = counter + _.options.slidesToScroll; + counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; + } + + return indexes; + + }; + + Slick.prototype.getSlick = function() { + + return this; + + }; + + Slick.prototype.getSlideCount = function() { + + var _ = this, + slidesTraversed, swipedSlide, centerOffset; + + centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; + + if (_.options.swipeToSlide === true) { + _.$slideTrack.find('.slick-slide').each(function(index, slide) { + if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { + swipedSlide = slide; + return false; + } + }); + + slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; + + return slidesTraversed; + + } else { + return _.options.slidesToScroll; + } + + }; + + Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { + + var _ = this; + + _.changeSlide({ + data: { + message: 'index', + index: parseInt(slide) + } + }, dontAnimate); + + }; + + Slick.prototype.init = function(creation) { + + var _ = this; + + if (!$(_.$slider).hasClass('slick-initialized')) { + + $(_.$slider).addClass('slick-initialized'); + + _.buildRows(); + _.buildOut(); + _.setProps(); + _.startLoad(); + _.loadSlider(); + _.initializeEvents(); + _.updateArrows(); + _.updateDots(); + _.checkResponsive(true); + _.focusHandler(); + + } + + if (creation) { + _.$slider.trigger('init', [_]); + } + + if (_.options.accessibility === true) { + _.initADA(); + } + + if ( _.options.autoplay ) { + + _.paused = false; + _.autoPlay(); + + } + + }; + + Slick.prototype.initADA = function() { + var _ = this; + _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({ + 'aria-hidden': 'true', + 'tabindex': '-1' + }).find('a, input, button, select').attr({ + 'tabindex': '-1' + }); + + _.$slideTrack.attr('role', 'listbox'); + + _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) { + $(this).attr({ + 'role': 'option', + 'aria-describedby': 'slick-slide' + _.instanceUid + i + '' + }); + }); + + if (_.$dots !== null) { + _.$dots.attr('role', 'tablist').find('li').each(function(i) { + $(this).attr({ + 'role': 'presentation', + 'aria-selected': 'false', + 'aria-controls': 'navigation' + _.instanceUid + i + '', + 'id': 'slick-slide' + _.instanceUid + i + '' + }); + }) + .first().attr('aria-selected', 'true').end() + .find('button').attr('role', 'button').end() + .closest('div').attr('role', 'toolbar'); + } + _.activateADA(); + + }; + + Slick.prototype.initArrowEvents = function() { + + var _ = this; + + if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { + _.$prevArrow + .off('click.slick') + .on('click.slick', { + message: 'previous' + }, _.changeSlide); + _.$nextArrow + .off('click.slick') + .on('click.slick', { + message: 'next' + }, _.changeSlide); + } + + }; + + Slick.prototype.initDotEvents = function() { + + var _ = this; + + if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { + $('li', _.$dots).on('click.slick', { + message: 'index' + }, _.changeSlide); + } + + if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) { + + $('li', _.$dots) + .on('mouseenter.slick', $.proxy(_.interrupt, _, true)) + .on('mouseleave.slick', $.proxy(_.interrupt, _, false)); + + } + + }; + + Slick.prototype.initSlideEvents = function() { + + var _ = this; + + if ( _.options.pauseOnHover ) { + + _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true)); + _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false)); + + } + + }; + + Slick.prototype.initializeEvents = function() { + + var _ = this; + + _.initArrowEvents(); + + _.initDotEvents(); + _.initSlideEvents(); + + _.$list.on('touchstart.slick mousedown.slick', { + action: 'start' + }, _.swipeHandler); + _.$list.on('touchmove.slick mousemove.slick', { + action: 'move' + }, _.swipeHandler); + _.$list.on('touchend.slick mouseup.slick', { + action: 'end' + }, _.swipeHandler); + _.$list.on('touchcancel.slick mouseleave.slick', { + action: 'end' + }, _.swipeHandler); + + _.$list.on('click.slick', _.clickHandler); + + $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); + + if (_.options.accessibility === true) { + _.$list.on('keydown.slick', _.keyHandler); + } + + if (_.options.focusOnSelect === true) { + $(_.$slideTrack).children().on('click.slick', _.selectHandler); + } + + $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); + + $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); + + $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); + + $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); + $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition); + + }; + + Slick.prototype.initUI = function() { + + var _ = this; + + if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { + + _.$prevArrow.show(); + _.$nextArrow.show(); + + } + + if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { + + _.$dots.show(); + + } + + }; + + Slick.prototype.keyHandler = function(event) { + + var _ = this; + //Dont slide if the cursor is inside the form fields and arrow keys are pressed + if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) { + if (event.keyCode === 37 && _.options.accessibility === true) { + _.changeSlide({ + data: { + message: _.options.rtl === true ? 'next' : 'previous' + } + }); + } else if (event.keyCode === 39 && _.options.accessibility === true) { + _.changeSlide({ + data: { + message: _.options.rtl === true ? 'previous' : 'next' + } + }); + } + } + + }; + + Slick.prototype.lazyLoad = function() { + + var _ = this, + loadRange, cloneRange, rangeStart, rangeEnd; + + function loadImages(imagesScope) { + + $('img[data-lazy]', imagesScope).each(function() { + + var image = $(this), + imageSource = $(this).attr('data-lazy'), + imageToLoad = document.createElement('img'); + + imageToLoad.onload = function() { + + image + .animate({ opacity: 0 }, 100, function() { + image + .attr('src', imageSource) + .animate({ opacity: 1 }, 200, function() { + image + .removeAttr('data-lazy') + .removeClass('slick-loading'); + }); + _.$slider.trigger('lazyLoaded', [_, image, imageSource]); + }); + + }; + + imageToLoad.onerror = function() { + + image + .removeAttr( 'data-lazy' ) + .removeClass( 'slick-loading' ) + .addClass( 'slick-lazyload-error' ); + + _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); + + }; + + imageToLoad.src = imageSource; + + }); + + } + + if (_.options.centerMode === true) { + if (_.options.infinite === true) { + rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); + rangeEnd = rangeStart + _.options.slidesToShow + 2; + } else { + rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); + rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; + } + } else { + rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; + rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); + if (_.options.fade === true) { + if (rangeStart > 0) rangeStart--; + if (rangeEnd <= _.slideCount) rangeEnd++; + } + } + + loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); + loadImages(loadRange); + + if (_.slideCount <= _.options.slidesToShow) { + cloneRange = _.$slider.find('.slick-slide'); + loadImages(cloneRange); + } else + if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { + cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); + loadImages(cloneRange); + } else if (_.currentSlide === 0) { + cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); + loadImages(cloneRange); + } + + }; + + Slick.prototype.loadSlider = function() { + + var _ = this; + + _.setPosition(); + + _.$slideTrack.css({ + opacity: 1 + }); + + _.$slider.removeClass('slick-loading'); + + _.initUI(); + + if (_.options.lazyLoad === 'progressive') { + _.progressiveLazyLoad(); + } + + }; + + Slick.prototype.next = Slick.prototype.slickNext = function() { + + var _ = this; + + _.changeSlide({ + data: { + message: 'next' + } + }); + + }; + + Slick.prototype.orientationChange = function() { + + var _ = this; + + _.checkResponsive(); + _.setPosition(); + + }; + + Slick.prototype.pause = Slick.prototype.slickPause = function() { + + var _ = this; + + _.autoPlayClear(); + _.paused = true; + + }; + + Slick.prototype.play = Slick.prototype.slickPlay = function() { + + var _ = this; + + _.autoPlay(); + _.options.autoplay = true; + _.paused = false; + _.focussed = false; + _.interrupted = false; + + }; + + Slick.prototype.postSlide = function(index) { + + var _ = this; + + if( !_.unslicked ) { + + _.$slider.trigger('afterChange', [_, index]); + + _.animating = false; + + _.setPosition(); + + _.swipeLeft = null; + + if ( _.options.autoplay ) { + _.autoPlay(); + } + + if (_.options.accessibility === true) { + _.initADA(); + } + + } + + }; + + Slick.prototype.prev = Slick.prototype.slickPrev = function() { + + var _ = this; + + _.changeSlide({ + data: { + message: 'previous' + } + }); + + }; + + Slick.prototype.preventDefault = function(event) { + + event.preventDefault(); + + }; + + Slick.prototype.progressiveLazyLoad = function( tryCount ) { + + tryCount = tryCount || 1; + + var _ = this, + $imgsToLoad = $( 'img[data-lazy]', _.$slider ), + image, + imageSource, + imageToLoad; + + if ( $imgsToLoad.length ) { + + image = $imgsToLoad.first(); + imageSource = image.attr('data-lazy'); + imageToLoad = document.createElement('img'); + + imageToLoad.onload = function() { + + image + .attr( 'src', imageSource ) + .removeAttr('data-lazy') + .removeClass('slick-loading'); + + if ( _.options.adaptiveHeight === true ) { + _.setPosition(); + } + + _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]); + _.progressiveLazyLoad(); + + }; + + imageToLoad.onerror = function() { + + if ( tryCount < 3 ) { + + /** + * try to load the image 3 times, + * leave a slight delay so we don't get + * servers blocking the request. + */ + setTimeout( function() { + _.progressiveLazyLoad( tryCount + 1 ); + }, 500 ); + + } else { + + image + .removeAttr( 'data-lazy' ) + .removeClass( 'slick-loading' ) + .addClass( 'slick-lazyload-error' ); + + _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); + + _.progressiveLazyLoad(); + + } + + }; + + imageToLoad.src = imageSource; + + } else { + + _.$slider.trigger('allImagesLoaded', [ _ ]); + + } + + }; + + Slick.prototype.refresh = function( initializing ) { + + var _ = this, currentSlide, lastVisibleIndex; + + lastVisibleIndex = _.slideCount - _.options.slidesToShow; + + // in non-infinite sliders, we don't want to go past the + // last visible index. + if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) { + _.currentSlide = lastVisibleIndex; + } + + // if less slides than to show, go to start. + if ( _.slideCount <= _.options.slidesToShow ) { + _.currentSlide = 0; + + } + + currentSlide = _.currentSlide; + + _.destroy(true); + + $.extend(_, _.initials, { currentSlide: currentSlide }); + + _.init(); + + if( !initializing ) { + + _.changeSlide({ + data: { + message: 'index', + index: currentSlide + } + }, false); + + } + + }; + + Slick.prototype.registerBreakpoints = function() { + + var _ = this, breakpoint, currentBreakpoint, l, + responsiveSettings = _.options.responsive || null; + + if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) { + + _.respondTo = _.options.respondTo || 'window'; + + for ( breakpoint in responsiveSettings ) { + + l = _.breakpoints.length-1; + currentBreakpoint = responsiveSettings[breakpoint].breakpoint; + + if (responsiveSettings.hasOwnProperty(breakpoint)) { + + // loop through the breakpoints and cut out any existing + // ones with the same breakpoint number, we don't want dupes. + while( l >= 0 ) { + if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) { + _.breakpoints.splice(l,1); + } + l--; + } + + _.breakpoints.push(currentBreakpoint); + _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; + + } + + } + + _.breakpoints.sort(function(a, b) { + return ( _.options.mobileFirst ) ? a-b : b-a; + }); + + } + + }; + + Slick.prototype.reinit = function() { + + var _ = this; + + _.$slides = + _.$slideTrack + .children(_.options.slide) + .addClass('slick-slide'); + + _.slideCount = _.$slides.length; + + if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { + _.currentSlide = _.currentSlide - _.options.slidesToScroll; + } + + if (_.slideCount <= _.options.slidesToShow) { + _.currentSlide = 0; + } + + _.registerBreakpoints(); + + _.setProps(); + _.setupInfinite(); + _.buildArrows(); + _.updateArrows(); + _.initArrowEvents(); + _.buildDots(); + _.updateDots(); + _.initDotEvents(); + _.cleanUpSlideEvents(); + _.initSlideEvents(); + + _.checkResponsive(false, true); + + if (_.options.focusOnSelect === true) { + $(_.$slideTrack).children().on('click.slick', _.selectHandler); + } + + _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); + + _.setPosition(); + _.focusHandler(); + + _.paused = !_.options.autoplay; + _.autoPlay(); + + _.$slider.trigger('reInit', [_]); + + }; + + Slick.prototype.resize = function() { + + var _ = this; + + if ($(window).width() !== _.windowWidth) { + clearTimeout(_.windowDelay); + _.windowDelay = window.setTimeout(function() { + _.windowWidth = $(window).width(); + _.checkResponsive(); + if( !_.unslicked ) { _.setPosition(); } + }, 50); + } + }; + + Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { + + var _ = this; + + if (typeof(index) === 'boolean') { + removeBefore = index; + index = removeBefore === true ? 0 : _.slideCount - 1; + } else { + index = removeBefore === true ? --index : index; + } + + if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { + return false; + } + + _.unload(); + + if (removeAll === true) { + _.$slideTrack.children().remove(); + } else { + _.$slideTrack.children(this.options.slide).eq(index).remove(); + } + + _.$slides = _.$slideTrack.children(this.options.slide); + + _.$slideTrack.children(this.options.slide).detach(); + + _.$slideTrack.append(_.$slides); + + _.$slidesCache = _.$slides; + + _.reinit(); + + }; + + Slick.prototype.setCSS = function(position) { + + var _ = this, + positionProps = {}, + x, y; + + if (_.options.rtl === true) { + position = -position; + } + x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; + y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; + + positionProps[_.positionProp] = position; + + if (_.transformsEnabled === false) { + _.$slideTrack.css(positionProps); + } else { + positionProps = {}; + if (_.cssTransitions === false) { + positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; + _.$slideTrack.css(positionProps); + } else { + positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; + _.$slideTrack.css(positionProps); + } + } + + }; + + Slick.prototype.setDimensions = function() { + + var _ = this; + + if (_.options.vertical === false) { + if (_.options.centerMode === true) { + _.$list.css({ + padding: ('0px ' + _.options.centerPadding) + }); + } + } else { + _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); + if (_.options.centerMode === true) { + _.$list.css({ + padding: (_.options.centerPadding + ' 0px') + }); + } + } + + _.listWidth = _.$list.width(); + _.listHeight = _.$list.height(); + + + if (_.options.vertical === false && _.options.variableWidth === false) { + _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); + _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); + + } else if (_.options.variableWidth === true) { + _.$slideTrack.width(5000 * _.slideCount); + } else { + _.slideWidth = Math.ceil(_.listWidth); + _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); + } + + var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); + if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); + + }; + + Slick.prototype.setFade = function() { + + var _ = this, + targetLeft; + + _.$slides.each(function(index, element) { + targetLeft = (_.slideWidth * index) * -1; + if (_.options.rtl === true) { + $(element).css({ + position: 'relative', + right: targetLeft, + top: 0, + zIndex: _.options.zIndex - 2, + opacity: 0 + }); + } else { + $(element).css({ + position: 'relative', + left: targetLeft, + top: 0, + zIndex: _.options.zIndex - 2, + opacity: 0 + }); + } + }); + + _.$slides.eq(_.currentSlide).css({ + zIndex: _.options.zIndex - 1, + opacity: 1 + }); + + }; + + Slick.prototype.setHeight = function() { + + var _ = this; + + if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { + var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); + _.$list.css('height', targetHeight); + } + + }; + + Slick.prototype.setOption = + Slick.prototype.slickSetOption = function() { + + /** + * accepts arguments in format of: + * + * - for changing a single option's value: + * .slick("setOption", option, value, refresh ) + * + * - for changing a set of responsive options: + * .slick("setOption", 'responsive', [{}, ...], refresh ) + * + * - for updating multiple values at once (not responsive) + * .slick("setOption", { 'option': value, ... }, refresh ) + */ + + var _ = this, l, item, option, value, refresh = false, type; + + if( $.type( arguments[0] ) === 'object' ) { + + option = arguments[0]; + refresh = arguments[1]; + type = 'multiple'; + + } else if ( $.type( arguments[0] ) === 'string' ) { + + option = arguments[0]; + value = arguments[1]; + refresh = arguments[2]; + + if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) { + + type = 'responsive'; + + } else if ( typeof arguments[1] !== 'undefined' ) { + + type = 'single'; + + } + + } + + if ( type === 'single' ) { + + _.options[option] = value; + + + } else if ( type === 'multiple' ) { + + $.each( option , function( opt, val ) { + + _.options[opt] = val; + + }); + + + } else if ( type === 'responsive' ) { + + for ( item in value ) { + + if( $.type( _.options.responsive ) !== 'array' ) { + + _.options.responsive = [ value[item] ]; + + } else { + + l = _.options.responsive.length-1; + + // loop through the responsive object and splice out duplicates. + while( l >= 0 ) { + + if( _.options.responsive[l].breakpoint === value[item].breakpoint ) { + + _.options.responsive.splice(l,1); + + } + + l--; + + } + + _.options.responsive.push( value[item] ); + + } + + } + + } + + if ( refresh ) { + + _.unload(); + _.reinit(); + + } + + }; + + Slick.prototype.setPosition = function() { + + var _ = this; + + _.setDimensions(); + + _.setHeight(); + + if (_.options.fade === false) { + _.setCSS(_.getLeft(_.currentSlide)); + } else { + _.setFade(); + } + + _.$slider.trigger('setPosition', [_]); + + }; + + Slick.prototype.setProps = function() { + + var _ = this, + bodyStyle = document.body.style; + + _.positionProp = _.options.vertical === true ? 'top' : 'left'; + + if (_.positionProp === 'top') { + _.$slider.addClass('slick-vertical'); + } else { + _.$slider.removeClass('slick-vertical'); + } + + if (bodyStyle.WebkitTransition !== undefined || + bodyStyle.MozTransition !== undefined || + bodyStyle.msTransition !== undefined) { + if (_.options.useCSS === true) { + _.cssTransitions = true; + } + } + + if ( _.options.fade ) { + if ( typeof _.options.zIndex === 'number' ) { + if( _.options.zIndex < 3 ) { + _.options.zIndex = 3; + } + } else { + _.options.zIndex = _.defaults.zIndex; + } + } + + if (bodyStyle.OTransform !== undefined) { + _.animType = 'OTransform'; + _.transformType = '-o-transform'; + _.transitionType = 'OTransition'; + if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; + } + if (bodyStyle.MozTransform !== undefined) { + _.animType = 'MozTransform'; + _.transformType = '-moz-transform'; + _.transitionType = 'MozTransition'; + if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; + } + if (bodyStyle.webkitTransform !== undefined) { + _.animType = 'webkitTransform'; + _.transformType = '-webkit-transform'; + _.transitionType = 'webkitTransition'; + if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; + } + if (bodyStyle.msTransform !== undefined) { + _.animType = 'msTransform'; + _.transformType = '-ms-transform'; + _.transitionType = 'msTransition'; + if (bodyStyle.msTransform === undefined) _.animType = false; + } + if (bodyStyle.transform !== undefined && _.animType !== false) { + _.animType = 'transform'; + _.transformType = 'transform'; + _.transitionType = 'transition'; + } + _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); + }; + + + Slick.prototype.setSlideClasses = function(index) { + + var _ = this, + centerOffset, allSlides, indexOffset, remainder; + + allSlides = _.$slider + .find('.slick-slide') + .removeClass('slick-active slick-center slick-current') + .attr('aria-hidden', 'true'); + + _.$slides + .eq(index) + .addClass('slick-current'); + + if (_.options.centerMode === true) { + + centerOffset = Math.floor(_.options.slidesToShow / 2); + + if (_.options.infinite === true) { + + if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { + + _.$slides + .slice(index - centerOffset, index + centerOffset + 1) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } else { + + indexOffset = _.options.slidesToShow + index; + allSlides + .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } + + if (index === 0) { + + allSlides + .eq(allSlides.length - 1 - _.options.slidesToShow) + .addClass('slick-center'); + + } else if (index === _.slideCount - 1) { + + allSlides + .eq(_.options.slidesToShow) + .addClass('slick-center'); + + } + + } + + _.$slides + .eq(index) + .addClass('slick-center'); + + } else { + + if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { + + _.$slides + .slice(index, index + _.options.slidesToShow) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } else if (allSlides.length <= _.options.slidesToShow) { + + allSlides + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } else { + + remainder = _.slideCount % _.options.slidesToShow; + indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; + + if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { + + allSlides + .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } else { + + allSlides + .slice(indexOffset, indexOffset + _.options.slidesToShow) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } + + } + + } + + if (_.options.lazyLoad === 'ondemand') { + _.lazyLoad(); + } + + }; + + Slick.prototype.setupInfinite = function() { + + var _ = this, + i, slideIndex, infiniteCount; + + if (_.options.fade === true) { + _.options.centerMode = false; + } + + if (_.options.infinite === true && _.options.fade === false) { + + slideIndex = null; + + if (_.slideCount > _.options.slidesToShow) { + + if (_.options.centerMode === true) { + infiniteCount = _.options.slidesToShow + 1; + } else { + infiniteCount = _.options.slidesToShow; + } + + for (i = _.slideCount; i > (_.slideCount - + infiniteCount); i -= 1) { + slideIndex = i - 1; + $(_.$slides[slideIndex]).clone(true).attr('id', '') + .attr('data-slick-index', slideIndex - _.slideCount) + .prependTo(_.$slideTrack).addClass('slick-cloned'); + } + for (i = 0; i < infiniteCount; i += 1) { + slideIndex = i; + $(_.$slides[slideIndex]).clone(true).attr('id', '') + .attr('data-slick-index', slideIndex + _.slideCount) + .appendTo(_.$slideTrack).addClass('slick-cloned'); + } + _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { + $(this).attr('id', ''); + }); + + } + + } + + }; + + Slick.prototype.interrupt = function( toggle ) { + + var _ = this; + + if( !toggle ) { + _.autoPlay(); + } + _.interrupted = toggle; + + }; + + Slick.prototype.selectHandler = function(event) { + + var _ = this; + + var targetElement = + $(event.target).is('.slick-slide') ? + $(event.target) : + $(event.target).parents('.slick-slide'); + + var index = parseInt(targetElement.attr('data-slick-index')); + + if (!index) index = 0; + + if (_.slideCount <= _.options.slidesToShow) { + + _.setSlideClasses(index); + _.asNavFor(index); + return; + + } + + _.slideHandler(index); + + }; + + Slick.prototype.slideHandler = function(index, sync, dontAnimate) { + + var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, + _ = this, navTarget; + + sync = sync || false; + + if (_.animating === true && _.options.waitForAnimate === true) { + return; + } + + if (_.options.fade === true && _.currentSlide === index) { + return; + } + + if (_.slideCount <= _.options.slidesToShow) { + return; + } + + if (sync === false) { + _.asNavFor(index); + } + + targetSlide = index; + targetLeft = _.getLeft(targetSlide); + slideLeft = _.getLeft(_.currentSlide); + + _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; + + if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { + if (_.options.fade === false) { + targetSlide = _.currentSlide; + if (dontAnimate !== true) { + _.animateSlide(slideLeft, function() { + _.postSlide(targetSlide); + }); + } else { + _.postSlide(targetSlide); + } + } + return; + } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { + if (_.options.fade === false) { + targetSlide = _.currentSlide; + if (dontAnimate !== true) { + _.animateSlide(slideLeft, function() { + _.postSlide(targetSlide); + }); + } else { + _.postSlide(targetSlide); + } + } + return; + } + + if ( _.options.autoplay ) { + clearInterval(_.autoPlayTimer); + } + + if (targetSlide < 0) { + if (_.slideCount % _.options.slidesToScroll !== 0) { + animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); + } else { + animSlide = _.slideCount + targetSlide; + } + } else if (targetSlide >= _.slideCount) { + if (_.slideCount % _.options.slidesToScroll !== 0) { + animSlide = 0; + } else { + animSlide = targetSlide - _.slideCount; + } + } else { + animSlide = targetSlide; + } + + _.animating = true; + + _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]); + + oldSlide = _.currentSlide; + _.currentSlide = animSlide; + + _.setSlideClasses(_.currentSlide); + + if ( _.options.asNavFor ) { + + navTarget = _.getNavTarget(); + navTarget = navTarget.slick('getSlick'); + + if ( navTarget.slideCount <= navTarget.options.slidesToShow ) { + navTarget.setSlideClasses(_.currentSlide); + } + + } + + _.updateDots(); + _.updateArrows(); + + if (_.options.fade === true) { + if (dontAnimate !== true) { + + _.fadeSlideOut(oldSlide); + + _.fadeSlide(animSlide, function() { + _.postSlide(animSlide); + }); + + } else { + _.postSlide(animSlide); + } + _.animateHeight(); + return; + } + + if (dontAnimate !== true) { + _.animateSlide(targetLeft, function() { + _.postSlide(animSlide); + }); + } else { + _.postSlide(animSlide); + } + + }; + + Slick.prototype.startLoad = function() { + + var _ = this; + + if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { + + _.$prevArrow.hide(); + _.$nextArrow.hide(); + + } + + if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { + + _.$dots.hide(); + + } + + _.$slider.addClass('slick-loading'); + + }; + + Slick.prototype.swipeDirection = function() { + + var xDist, yDist, r, swipeAngle, _ = this; + + xDist = _.touchObject.startX - _.touchObject.curX; + yDist = _.touchObject.startY - _.touchObject.curY; + r = Math.atan2(yDist, xDist); + + swipeAngle = Math.round(r * 180 / Math.PI); + if (swipeAngle < 0) { + swipeAngle = 360 - Math.abs(swipeAngle); + } + + if ((swipeAngle <= 45) && (swipeAngle >= 0)) { + return (_.options.rtl === false ? 'left' : 'right'); + } + if ((swipeAngle <= 360) && (swipeAngle >= 315)) { + return (_.options.rtl === false ? 'left' : 'right'); + } + if ((swipeAngle >= 135) && (swipeAngle <= 225)) { + return (_.options.rtl === false ? 'right' : 'left'); + } + if (_.options.verticalSwiping === true) { + if ((swipeAngle >= 35) && (swipeAngle <= 135)) { + return 'down'; + } else { + return 'up'; + } + } + + return 'vertical'; + + }; + + Slick.prototype.swipeEnd = function(event) { + + var _ = this, + slideCount, + direction; + + _.dragging = false; + _.interrupted = false; + _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true; + + if ( _.touchObject.curX === undefined ) { + return false; + } + + if ( _.touchObject.edgeHit === true ) { + _.$slider.trigger('edge', [_, _.swipeDirection() ]); + } + + if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) { + + direction = _.swipeDirection(); + + switch ( direction ) { + + case 'left': + case 'down': + + slideCount = + _.options.swipeToSlide ? + _.checkNavigable( _.currentSlide + _.getSlideCount() ) : + _.currentSlide + _.getSlideCount(); + + _.currentDirection = 0; + + break; + + case 'right': + case 'up': + + slideCount = + _.options.swipeToSlide ? + _.checkNavigable( _.currentSlide - _.getSlideCount() ) : + _.currentSlide - _.getSlideCount(); + + _.currentDirection = 1; + + break; + + default: + + + } + + if( direction != 'vertical' ) { + + _.slideHandler( slideCount ); + _.touchObject = {}; + _.$slider.trigger('swipe', [_, direction ]); + + } + + } else { + + if ( _.touchObject.startX !== _.touchObject.curX ) { + + _.slideHandler( _.currentSlide ); + _.touchObject = {}; + + } + + } + + }; + + Slick.prototype.swipeHandler = function(event) { + + var _ = this; + + if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) { + return; + } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { + return; + } + + _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? + event.originalEvent.touches.length : 1; + + _.touchObject.minSwipe = _.listWidth / _.options + .touchThreshold; + + if (_.options.verticalSwiping === true) { + _.touchObject.minSwipe = _.listHeight / _.options + .touchThreshold; + } + + switch (event.data.action) { + + case 'start': + _.swipeStart(event); + break; + + case 'move': + _.swipeMove(event); + break; + + case 'end': + _.swipeEnd(event); + break; + + } + + }; + + Slick.prototype.swipeMove = function(event) { + + var _ = this, + edgeWasHit = false, + curLeft, swipeDirection, swipeLength, positionOffset, touches; + + touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; + + if (!_.dragging || touches && touches.length !== 1) { + return false; + } + + curLeft = _.getLeft(_.currentSlide); + + _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; + _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; + + _.touchObject.swipeLength = Math.round(Math.sqrt( + Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); + + if (_.options.verticalSwiping === true) { + _.touchObject.swipeLength = Math.round(Math.sqrt( + Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); + } + + swipeDirection = _.swipeDirection(); + + if (swipeDirection === 'vertical') { + return; + } + + if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { + event.preventDefault(); + } + + positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); + if (_.options.verticalSwiping === true) { + positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; + } + + + swipeLength = _.touchObject.swipeLength; + + _.touchObject.edgeHit = false; + + if (_.options.infinite === false) { + if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) { + swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; + _.touchObject.edgeHit = true; + } + } + + if (_.options.vertical === false) { + _.swipeLeft = curLeft + swipeLength * positionOffset; + } else { + _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; + } + if (_.options.verticalSwiping === true) { + _.swipeLeft = curLeft + swipeLength * positionOffset; + } + + if (_.options.fade === true || _.options.touchMove === false) { + return false; + } + + if (_.animating === true) { + _.swipeLeft = null; + return false; + } + + _.setCSS(_.swipeLeft); + + }; + + Slick.prototype.swipeStart = function(event) { + + var _ = this, + touches; + + _.interrupted = true; + + if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { + _.touchObject = {}; + return false; + } + + if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { + touches = event.originalEvent.touches[0]; + } + + _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; + _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; + + _.dragging = true; + + }; + + Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { + + var _ = this; + + if (_.$slidesCache !== null) { + + _.unload(); + + _.$slideTrack.children(this.options.slide).detach(); + + _.$slidesCache.appendTo(_.$slideTrack); + + _.reinit(); + + } + + }; + + Slick.prototype.unload = function() { + + var _ = this; + + $('.slick-cloned', _.$slider).remove(); + + if (_.$dots) { + _.$dots.remove(); + } + + if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { + _.$prevArrow.remove(); + } + + if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { + _.$nextArrow.remove(); + } + + _.$slides + .removeClass('slick-slide slick-active slick-visible slick-current') + .attr('aria-hidden', 'true') + .css('width', ''); + + }; + + Slick.prototype.unslick = function(fromBreakpoint) { + + var _ = this; + _.$slider.trigger('unslick', [_, fromBreakpoint]); + _.destroy(); + + }; + + Slick.prototype.updateArrows = function() { + + var _ = this, + centerOffset; + + centerOffset = Math.floor(_.options.slidesToShow / 2); + + if ( _.options.arrows === true && + _.slideCount > _.options.slidesToShow && + !_.options.infinite ) { + + _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); + _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); + + if (_.currentSlide === 0) { + + _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); + _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); + + } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { + + _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); + _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); + + } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { + + _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); + _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); + + } + + } + + }; + + Slick.prototype.updateDots = function() { + + var _ = this; + + if (_.$dots !== null) { + + _.$dots + .find('li') + .removeClass('slick-active') + .attr('aria-hidden', 'true'); + + _.$dots + .find('li') + .eq(Math.floor(_.currentSlide / _.options.slidesToScroll)) + .addClass('slick-active') + .attr('aria-hidden', 'false'); + + } + + }; + + Slick.prototype.visibility = function() { + + var _ = this; + + if ( _.options.autoplay ) { + + if ( document[_.hidden] ) { + + _.interrupted = true; + + } else { + + _.interrupted = false; + + } + + } + + }; + + $.fn.slick = function() { + var _ = this, + opt = arguments[0], + args = Array.prototype.slice.call(arguments, 1), + l = _.length, + i, + ret; + for (i = 0; i < l; i++) { + if (typeof opt == 'object' || typeof opt == 'undefined') + _[i].slick = new Slick(_[i], opt); + else + ret = _[i].slick[opt].apply(_[i].slick, args); + if (typeof ret != 'undefined') return ret; + } + return _; + }; + +})); diff --git a/jquery/slick/slick.less b/jquery/slick/slick.less new file mode 100644 index 0000000..2fa0fb2 --- /dev/null +++ b/jquery/slick/slick.less @@ -0,0 +1,98 @@ +/* Slider */ + +.slick-slider { + position: relative; + display: block; + box-sizing: border-box; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} +.slick-list { + position: relative; + overflow: hidden; + display: block; + margin: 0; + padding: 0; + + &:focus { + outline: none; + } + + &.dragging { + cursor: pointer; + cursor: hand; + } +} +.slick-slider .slick-track, +.slick-slider .slick-list { + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track { + position: relative; + left: 0; + top: 0; + display: block; + + &:before, + &:after { + content: ""; + display: table; + } + + &:after { + clear: both; + } + + .slick-loading & { + visibility: hidden; + } +} +.slick-slide { + float: left; + height: 100%; + min-height: 1px; + [dir="rtl"] & { + float: right; + } + img { + display: block; + } + &.slick-loading img { + display: none; + } + + display: none; + + &.dragging img { + pointer-events: none; + } + + .slick-initialized & { + display: block; + } + + .slick-loading & { + visibility: hidden; + } + + .slick-vertical & { + display: block; + height: auto; + border: 1px solid transparent; + } +} +.slick-arrow.slick-hidden { + display: none; +} diff --git a/jquery/slick/slick.min.js b/jquery/slick/slick.min.js new file mode 100644 index 0000000..88a8a6b --- /dev/null +++ b/jquery/slick/slick.min.js @@ -0,0 +1,18 @@ +/* + _ _ _ _ + ___| (_) ___| | __ (_)___ +/ __| | |/ __| |/ / | / __| +\__ \ | | (__| < _ | \__ \ +|___/_|_|\___|_|\_(_)/ |___/ + |__/ + + Version: 1.6.0 + Author: Ken Wheeler + Website: http://kenwheeler.github.io + Docs: http://kenwheeler.github.io/slick + Repo: http://github.com/kenwheeler/slick + Issues: http://github.com/kenwheeler/slick/issues + + */ +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(b,c){return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.focussed=!1,e.interrupted=!1,e.hidden="hidden",e.paused=!0,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,d,f),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0)}var b=0;return c}(),b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.getNavTarget=function(){var b=this,c=b.options.asNavFor;return c&&null!==c&&(c=a(c).not(b.$slider)),c},b.prototype.asNavFor=function(b){var c=this,d=c.getNavTarget();null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayClear(),a.slideCount>a.options.slidesToShow&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this,b=a.currentSlide+a.options.slidesToScroll;a.paused||a.interrupted||a.focussed||(a.options.infinite===!1&&(1===a.direction&&a.currentSlide+1===a.slideCount-1?a.direction=0:0===a.direction&&(b=a.currentSlide-a.options.slidesToScroll,a.currentSlide-1===0&&(a.direction=1))),a.slideHandler(b))},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(b.$slider.addClass("slick-dotted"),d=a("<ul />").addClass(b.options.dotsClass),c=0;c<=b.getDotCount();c+=1)d.append(a("<li />").append(b.options.customPaging.call(this,b,c)));b.$dots=d.appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.empty().append(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.currentTarget);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&a("li",b.$dots).off("click.slick",b.changeSlide).off("mouseenter.slick",a.proxy(b.interrupt,b,!0)).off("mouseleave.slick",a.proxy(b.interrupt,b,!1)),b.$slider.off("focus.slick blur.slick"),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.cleanUpSlideEvents(),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpSlideEvents=function(){var b=this;b.$list.off("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.empty().append(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.$slider.removeClass("slick-dotted"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.focusHandler=function(){var b=this;b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*:not(.slick-arrow)",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.options.pauseOnFocus&&(b.focussed=d.is(":focus"),b.autoPlay())},0)})},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else if(a.options.asNavFor)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else d=1+Math.ceil((a.slideCount-a.options.slidesToShow)/a.options.slidesToScroll);return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots(),c.checkResponsive(!0),c.focusHandler()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA(),c.options.autoplay&&(c.paused=!1,c.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.off("click.slick").on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.interrupt,b,!0)).on("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.initSlideEvents=function(){var b=this;b.options.pauseOnHover&&(b.$list.on("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.interrupt,b,!1)))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.initSlideEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:b.options.rtl===!0?"next":"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:b.options.rtl===!0?"previous":"next"}}))},b.prototype.lazyLoad=function(){function g(c){a("img[data-lazy]",c).each(function(){var c=a(this),d=a(this).attr("data-lazy"),e=document.createElement("img");e.onload=function(){c.animate({opacity:0},100,function(){c.attr("src",d).animate({opacity:1},200,function(){c.removeAttr("data-lazy").removeClass("slick-loading")}),b.$slider.trigger("lazyLoaded",[b,c,d])})},e.onerror=function(){c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),b.$slider.trigger("lazyLoadError",[b,c,d])},e.src=d})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=Math.ceil(e+b.options.slidesToShow),b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.autoPlay(),a.options.autoplay=!0,a.paused=!1,a.focussed=!1,a.interrupted=!1},b.prototype.postSlide=function(a){var b=this;b.unslicked||(b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay&&b.autoPlay(),b.options.accessibility===!0&&b.initADA())},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(b){b=b||1;var e,f,g,c=this,d=a("img[data-lazy]",c.$slider);d.length?(e=d.first(),f=e.attr("data-lazy"),g=document.createElement("img"),g.onload=function(){e.attr("src",f).removeAttr("data-lazy").removeClass("slick-loading"),c.options.adaptiveHeight===!0&&c.setPosition(),c.$slider.trigger("lazyLoaded",[c,e,f]),c.progressiveLazyLoad()},g.onerror=function(){3>b?setTimeout(function(){c.progressiveLazyLoad(b+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),c.$slider.trigger("lazyLoadError",[c,e,f]),c.progressiveLazyLoad())},g.src=f):c.$slider.trigger("allImagesLoaded",[c])},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,!c.options.infinite&&c.currentSlide>e&&(c.currentSlide=e),c.slideCount<=c.options.slidesToShow&&(c.currentSlide=0),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.cleanUpSlideEvents(),b.initSlideEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.setPosition(),b.focusHandler(),b.paused=!b.options.autoplay,b.autoPlay(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(){var c,d,e,f,h,b=this,g=!1;if("object"===a.type(arguments[0])?(e=arguments[0],g=arguments[1],h="multiple"):"string"===a.type(arguments[0])&&(e=arguments[0],f=arguments[1],g=arguments[2],"responsive"===arguments[0]&&"array"===a.type(arguments[1])?h="responsive":"undefined"!=typeof arguments[1]&&(h="single")),"single"===h)b.options[e]=f;else if("multiple"===h)a.each(e,function(a,c){b.options[a]=c});else if("responsive"===h)for(d in f)if("array"!==a.type(b.options.responsive))b.options.responsive=[f[d]];else{for(c=b.options.responsive.length-1;c>=0;)b.options.responsive[c].breakpoint===f[d].breakpoint&&b.options.responsive.splice(c,1),c--;b.options.responsive.push(f[d])}g&&(b.unload(),b.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a, +d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.interrupt=function(a){var b=this;a||b.autoPlay(),b.interrupted=a},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,j,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.options.asNavFor&&(j=i.getNavTarget(),j=j.slick("getSlick"),j.slideCount<=j.options.slidesToShow&&j.setSlideClasses(i.currentSlide)),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"down":"up":"vertical"},b.prototype.swipeEnd=function(a){var c,d,b=this;if(b.dragging=!1,b.interrupted=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe){switch(d=b.swipeDirection()){case"left":case"down":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.currentDirection=0;break;case"right":case"up":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.currentDirection=1}"vertical"!=d&&(b.slideHandler(c),b.touchObject={},b.$slider.trigger("swipe",[b,d]))}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return b.interrupted=!0,1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;a.options.autoplay&&(document[a.hidden]?a.interrupted=!0:a.interrupted=!1)},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); \ No newline at end of file diff --git a/jquery/slick/slick.scss b/jquery/slick/slick.scss new file mode 100644 index 0000000..2fa0fb2 --- /dev/null +++ b/jquery/slick/slick.scss @@ -0,0 +1,98 @@ +/* Slider */ + +.slick-slider { + position: relative; + display: block; + box-sizing: border-box; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} +.slick-list { + position: relative; + overflow: hidden; + display: block; + margin: 0; + padding: 0; + + &:focus { + outline: none; + } + + &.dragging { + cursor: pointer; + cursor: hand; + } +} +.slick-slider .slick-track, +.slick-slider .slick-list { + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track { + position: relative; + left: 0; + top: 0; + display: block; + + &:before, + &:after { + content: ""; + display: table; + } + + &:after { + clear: both; + } + + .slick-loading & { + visibility: hidden; + } +} +.slick-slide { + float: left; + height: 100%; + min-height: 1px; + [dir="rtl"] & { + float: right; + } + img { + display: block; + } + &.slick-loading img { + display: none; + } + + display: none; + + &.dragging img { + pointer-events: none; + } + + .slick-initialized & { + display: block; + } + + .slick-loading & { + visibility: hidden; + } + + .slick-vertical & { + display: block; + height: auto; + border: 1px solid transparent; + } +} +.slick-arrow.slick-hidden { + display: none; +} diff --git a/lang/en/local_sharedresources.php b/lang/en/local_sharedresources.php index a283b69..bc5df28 100644 --- a/lang/en/local_sharedresources.php +++ b/lang/en/local_sharedresources.php @@ -18,18 +18,19 @@ $string['adminrepository'] = 'Admin Repository'; $string['backtocourse'] = 'Back to course'; $string['backtoindex'] = 'Back to index'; $string['browse'] = 'Browse by categories'; -$string['configdefaulttaxonomypurposeonimport'] = 'The taxonomy purpose tells why the taxonomy is used for. some metadata schema allows multiple taxonomies to be used at once for distinct purposes.'; -$string['confirm'] = 'Confirm'; +$string['browser'] = 'Taxonomy based browser'; +$string['clinonexistingcontext'] = 'Error: Non existing context'; +$string['clinonexistingpath'] = 'Error: Path does not exist'; +$string['configdefaulttaxonomypurposeonimport'] = 'Taxonomy purpose for import'; +$string['configdefaultlibraryindexpage'] = 'Default index page of the library'; $string['confignotfound'] = 'Config file not found'; +$string['configprivatecatalog'] = 'Private catalog'; +$string['confirm'] = 'Confirm'; $string['courselist'] = 'Course list'; $string['deducetaxonomyfrompath'] = 'Guess taxonomy from path'; -$string['clinonexistingpath'] = 'Error: Path does not exist'; -$string['clinonexistingcontext'] = 'Error: Non existing context'; -$string['defaulttaxonomypurposeonimport'] = 'Taxonomy purpose for import'; $string['doresetvolume'] = 'Reset'; $string['errorinvalidresource'] = 'Invalid resource'; $string['errorinvalidresourceid'] = 'Invalid resource ID'; -$string['rpcsharedresourceerror'] = 'RPC mod/sharedresource/get_list:<br/>{$a}'; $string['errormnetpeer'] = 'MNET client initialisation error'; $string['errornotadir'] = 'The import directory does not exist or is not accessible'; $string['exclusionpattern'] = 'Exclusion pattern'; @@ -48,14 +49,15 @@ $string['noresources'] = 'This repository has no local resources'; $string['notused'] = 'Never used in this site'; $string['pluginname'] = 'Shared Resources Center'; $string['publish_sharedresource'] = 'Publish Sharedresource'; -$string['private_catalog'] = 'Private catalog'; -$string['config_private_catalog'] = 'If checked, the sharedresource library is not accessible to unlogged users. sharedresources indexs will NOT be harveastable by OAI endpoint'; $string['reinitialized'] = '{$a} files unmarked'; $string['resetvolume'] = 'Reset volume'; $string['resourceimport'] = 'Resource Import'; $string['resources'] = 'Resources'; $string['resourcesadministration'] = 'Resources administration'; $string['resourcespushout'] = 'Exporting to a provider library'; +$string['rpcsharedresourceerror'] = 'RPC mod/sharedresource/get_list:<br/>{$a}'; +$string['searchinlibrary'] = 'Search in library'; +$string['searchengine'] = 'Search engine'; $string['sharedresources_library'] = 'Shared resources library'; $string['sharedresourcesindex'] = 'Shared resources index'; $string['textsearch'] = 'Full text search'; @@ -65,6 +67,12 @@ $string['updateresourcespageon'] = 'Edit this page'; $string['used'] = 'Used: {$a}'; $string['viewed'] = 'Viewed: {$a}'; +$string['configdefaulttaxonomypurposeonimport_desc'] = 'The taxonomy purpose tells why the taxonomy is used for. +some metadata schema allows multiple taxonomies to be used at once for distinct purposes.'; + +$string['configprivatecatalog_desc'] = 'If checked, the sharedresource library is not accessible to unlogged users. +sharedresources indexs will NOT be harveastable by OAI endpoint'; + $string['resetvolume_help'] = 'When processing, files are marked with a "__" prefix to allow respawn of the import if memory or processing limits failure. You can reset the initial state of files using this option.'; @@ -80,3 +88,5 @@ will ignore all JPEG images)'; $string['deducetaxonomyfrompath_help'] = 'If enabled, the relative path of the resource denotes the taxonomy. The discipline taxonomy will be automatically be filled with taxonomy entries. The imported taxonomy hierarchy will reflect the directory organisation.'; + +$string['configdefaultlibraryindexpage_desc'] = 'The default index page choice may depend of the activated metadata plugin'; diff --git a/lang/fr/local_sharedresources.php b/lang/fr/local_sharedresources.php index d395fe6..c414baf 100644 --- a/lang/fr/local_sharedresources.php +++ b/lang/fr/local_sharedresources.php @@ -18,17 +18,18 @@ $string['adminrepository'] = 'Administrer la librairie'; $string['backtocourse'] = 'Revenir au cours'; $string['backtoindex'] = 'Revenir à l\'index'; $string['browse'] = 'Explorer par catégories'; -$string['clinonexistingpath'] = 'Erreur : Chemin inexistant'; +$string['browser'] = 'Explorateur de taxonomie'; $string['clinonexistingcontext'] = 'Erreur : Contexte inexistant'; -$string['configdefaulttaxonomypurposeonimport'] = 'L\'objet de la taxonomie définit pour quoi cette taxonomie est utilisée. Certains schémas de métadonnées autorisent la classification des ressources selon plusieurs taxonomies avec des objectifs différents.'; -$string['confirm'] = 'Confirmer'; +$string['clinonexistingpath'] = 'Erreur : Chemin inexistant'; +$string['configdefaulttaxonomypurposeonimport'] = 'Objet de la taxonomie par défaut'; $string['confignotfound'] = 'Fichier de configuration introuvable'; +$string['configprivatecatalog'] = 'Catalogue privé'; +$string['confirm'] = 'Confirmer'; $string['deducetaxonomyfrompath'] = 'Déduire la taxonomie du chemin'; -$string['defaulttaxonomypurposeonimport'] = 'Objet de la taxonomie par défaut'; +$string['configdefaultlibraryindexpage'] = 'Page d\'arrivée de la librairie par défaut'; $string['doresetvolume'] = 'Réinitialiser'; $string['errorinvalidresource'] = 'Resource invalide'; $string['errorinvalidresourceid'] = 'Identifiant de ressource inconnu'; -$string['rpcsharedresourceerror'] = 'Erreur RPC mod/sharedresource/get_list:<br/>{$a}'; $string['errormnetpeer'] = 'Erreur d\'initialisation du client MNET'; $string['errornotadir'] = 'Le répertoire d\'import n\'existe pas ou n\'est pas accessible'; $string['exclusionpattern'] = 'Motif d\'exclusion'; @@ -46,16 +47,17 @@ $string['newresource'] = 'Ajouter une ressource'; $string['noresources'] = '<p>Aucune ressource locale dans cette librairie</p>'; $string['notused'] = 'Jamais utilisée dans ce site'; $string['pluginname'] = 'Librairie de ressources'; -$string['private_catalog'] = 'Catalogue privé'; -$string['config_private_catalog'] = 'Si coché, toute la librairie mutualisée est totalement privée et les ressources ne peuvent être accédées de l\'extérieur. Les index ne sont alors pas moissonables à travers le service OAI'; $string['reinitialized'] = '{$a} fichiers rétablis'; $string['resetvolume'] = 'Réinitialiser le volume pour l\'import'; $string['resourceimport'] = 'Importation de ressources'; $string['resources'] = 'Ressources'; $string['resourcesadministration'] = 'Administration des ressources'; $string['resourcespushout'] = 'Exporter vers un fournisseur de ressources'; +$string['rpcsharedresourceerror'] = 'Erreur RPC mod/sharedresource/get_list:<br/>{$a}'; $string['sharedresources_library'] = 'Librairie partagée'; $string['sharedresourcesindex'] = 'Librairie de ressources'; +$string['searchinlibrary'] = 'Chercher dans la librairie'; +$string['searchengine'] = 'Moteur de recherche'; $string['textsearch'] = 'Recherche texte'; $string['topkeywords'] = 'Mots-clefs principaux'; $string['updateresourcespageoff'] = 'Mode normal'; @@ -63,6 +65,14 @@ $string['updateresourcespageon'] = 'Mode édition'; $string['used'] = 'Utilisée : {$a}'; $string['viewed'] = 'Vue : {$a}'; +$string['configdefaulttaxonomypurposeonimport_desc'] = 'L\'objet de la taxonomie définit pour quoi +cette taxonomie est utilisée. Certains schémas de métadonnées autorisent la classification des ressources +selon plusieurs taxonomies avec des objectifs différents.'; + +$string['configprivatecatalog_desc'] = 'Si coché, toute la librairie mutualisée est totalement privée +et les ressources ne peuvent être accédées de l\'extérieur. Les index ne sont alors pas moissonables à travers le +service OAI'; + $string['resetvolume_help'] = 'Les fichiers traités sont marqués par le préfixe "__" pour permettre une reprise partielle du traitement en cas de limite mémoire ou physique. Vous pouvez complétement réinitialiser le volume de fichiers à importer avec cette option.'; @@ -81,3 +91,5 @@ $string['exclusionpattern_help'] = 'Les noms de fichier correpondant à ce motif $string['deducetaxonomyfrompath_help'] = 'Si coché, le chemin relatif de la ressoure importée servira de base à l\'alimentation de la taxonomie. L^\'organisation hiérarchique de la taxonomie produite sera le reflet de l\'organisation physique du répertoire d\'import.'; + +$string['configdefaultlibraryindexpage_desc'] = 'Le choix des pages par défaut de la librairie peut dépendre de la norme de métadonnée activée.'; diff --git a/lib.php b/lib.php index d3205da..a3ca1f6 100644 --- a/lib.php +++ b/lib.php @@ -194,34 +194,6 @@ function get_remote_repo_resources($repo, &$fullresults, $metadatafilters = '', return $fullresults['entries']; } -/** - * - */ -function update_resourcepage_icon() { - global $CFG, $USER; - - if (!isloggedin()) { - return ''; - } - - if (!empty($USER->editing)) { - $string = get_string('updateresourcepageoff', 'sharedresource'); - $edit = '0'; - } else { - $string = get_string('updateresourcepageon', 'sharedresource'); - $edit = '1'; - } - - $formurl = new moodle_url('/resources/index.php'); - $return = '<form '.$CFG->frametarget.' method="get" action="'.$formurl.'">'; - $return .= '<div>'; - $return .= '<input type="hidden" name="edit" value="'.$edit.'" />'; - $return .= '<input type="submit" value="'.$string.'" />'; - $return .= '</div></form>'; - - return $return; -} - /** * Resources providers are mnet_hosts for which we have a subscription to its provider * service @@ -637,10 +609,20 @@ function sharedresource_is_moodle_activity($resource) { * @TODO : turn implementation to more portable IN() statement */ function sharedresource_get_top_keywords($courseid) { - global $DB; + global $DB, $CFG; $config = get_config('sharedresource'); + $mtdclass = '\\mod_sharedresource\\plugin_'.$config->schema; + require_once($CFG->dirroot.'/mod/sharedresource/plugins/'.$config->schema.'/plugin.class.php'); + $mtdstandard = new $mtdclass(); + $kwelement = $mtdstandard->getKeywordElement(); + + if (!$kwelement) { + // Some metadata standard have no keywords. (DC) + return ''; + } + $contexts[] = 1; // Get all categories on the way to root. @@ -658,11 +640,6 @@ function sharedresource_get_top_keywords($courseid) { $contextlist = implode(',', $contexts); - $mtdclass = '\\mod_sharedresource\\plugin_'.$config->schema; - $mtdstandard = new $mtdclass(); - - $kwelement = $mtdstandard->getKeywordElement(); - $topranksize = 20; $sql = " diff --git a/oai/oai2/record_lomfr.php b/oai/oai2/record_lomfr.php index f74cec2..2904dc7 100644 --- a/oai/oai2/record_lomfr.php +++ b/oai/oai2/record_lomfr.php @@ -14,9 +14,10 @@ if (!$myformat['defaultnamespace']) { $atts['xmlns'] = $myformat['metadataNamespace']; } -if (!isset($lom)) { // allows reuse of the class for listrecords +if (!isset($lom)) { + // allows reuse of the class for listrecords. $lomatts = array( - 'xsi:schemaLocation' => $METADATAFORMATS['shared_lom']['metadataNamespace'].' http://ltsc.ieee.org/xsd/lomv1.0/lomLoose.xsd', + 'xsi:schemaLocation' => $METADATAFORMATS['oai_lom']['metadataNamespace'].' http://ltsc.ieee.org/xsd/lomv1.0/lomLoose.xsd', 'xmlns' => $METADATAFORMATS['oai_lom']['metadataNamespace'] ); } diff --git a/oai/oaidp-config.php b/oai/oaidp-config.php index c47bcf7..2a435d4 100644 --- a/oai/oaidp-config.php +++ b/oai/oaidp-config.php @@ -190,7 +190,7 @@ $METADATAFORMATS = array ( 'record_prefix' => 'lom', 'defaultnamespace' => false, 'record_namespace' => 'http://ltsc.ieee.org/xsd/LOM'), - + 'oai_lomfr' => array('metadataPrefix' => 'oai_lomfr', 'schema' => 'http://www.lom-fr.fr/xsd/LOMFR', 'metadataNamespace' => 'http://www.lom-fr.fr/xsd/LOMFR', @@ -214,7 +214,7 @@ $METADATAFORMATS = array ( 'record_prefix' => 'suplomfr', 'defaultnamespace' => 'http://www.lom-fr.fr/xsd/LOMFR', 'record_namespace' => 'http://www.lom-fr.fr/xsd/SUPLOMFR'), - + 'oai_lre' => array('metadataPrefix'=>'oai_lre', 'schema' => 'http://fire.eun.org/lode/imslorsltitm_v1p0.xsd', 'metadataNamespace' => 'http://www.imsglobal.org/xsd/imslorsltitm_v1p0', @@ -222,7 +222,6 @@ $METADATAFORMATS = array ( 'record_prefix' => 'lre', 'defaultnamespace' => false, 'record_namespace' => 'http://www.w3.org/2001/XMLSchema-instancehttp://www.w3.org/2001/XMLSchema-instance') - ); // the charset you store your metadata in your database diff --git a/renderer.php b/renderer.php index 1245eea..b003af0 100644 --- a/renderer.php +++ b/renderer.php @@ -62,7 +62,7 @@ class local_sharedresources_renderer extends plugin_renderer_base { $template->courseid = $courseid; $template->repo = $repo; $template->offset = $offset; - $template->strsearch = get_string('search'); + $template->searchstr = get_string('search'); $template->widgets = array(); $n = 0; @@ -211,18 +211,18 @@ class local_sharedresources_renderer extends plugin_renderer_base { } else { $params = array('courseid' => $course->id, 'entryid' => $resource->id); $template->courselisturl = new moodle_url('/local/sharedresources/courses.php', $params); - $template->strused = get_string('used', 'local_sharedresources', $resource->uses); + $template->usedstr = get_string('used', 'local_sharedresources', $resource->uses); } // Views. - $template->strviewed = get_string('viewed', 'local_sharedresources', $resource->scoreview); + $template->viewedstr = get_string('viewed', 'local_sharedresources', $resource->scoreview); // Likes. - $template->strmarkliked = get_string('markliked', 'local_sharedresources'); + $template->marklikedstr = get_string('markliked', 'local_sharedresources'); // $jshandler = 'javascript:ajax_mark_liked(\''.$repo.'\', \''.$resource->identifier.'\')'; $template->stars = $this->stars($resource->scorelike, 15); - $template->strliked = get_string('liked', 'local_sharedresources'); + $template->likedstr = get_string('liked', 'local_sharedresources'); // Resource descriptors. if (!empty($resource->description)) { @@ -230,7 +230,7 @@ class local_sharedresources_renderer extends plugin_renderer_base { $template->description = $resource->description; // Keywords. - $template->strkeywords = get_string('keywords', 'sharedresource'); + $template->keywordsstr = get_string('keywords', 'sharedresource'); $template->keywords = $resource->keywords; } @@ -242,14 +242,17 @@ class local_sharedresources_renderer extends plugin_renderer_base { if (has_capability('moodle/course:manageactivities', $context)) { $cmdtemplate = new StdClass; + + $cmdtemplate->installtoolstr = get_string('installltitool', 'local_sharedresources'); + $cmdtemplate->addtocoursestr = get_string('addtocourse', 'sharedresource'); + $cmdtemplate->localizetocoursestr = get_string('localizetocourse', 'sharedresource'); + $cmdtemplate->addfiletocoursestr = get_string('addfiletocourse', 'sharedresource'); + $cmdtemplate->i = $i; $cmdtemplate->isltitool = sharedresource_is_lti($resource); $ismoodleactivity = sharedresource_is_moodle_activity($resource); $isplayablemedia = sharedresource_is_media($resource); - $cmdtemplate->straddtocourse = get_string('addtocourse', 'sharedresource'); - $cmdtemplate->strlocalizetocourse = get_string('localizetocourse', 'sharedresource'); - $cmdtemplate->straddfiletocourse = get_string('addfiletocourse', 'sharedresource'); $cmdtemplate->isremote = $isremote; if (!$isremote) { // If is local or already proxied. @@ -278,11 +281,9 @@ class local_sharedresources_renderer extends plugin_renderer_base { } } */ - $cmdtemplate->strinstalltool = get_string('installltitool', 'local_sharedresources'); $cmdtemplate->islocalizable = true; } - $cmdtemplate->strinstalltool = get_string('installltitool', 'local_sharedresources'); /** $jshandler = 'javascript:document.forms[\'add'.$i.'\'].mode.value = \'ltiinstall\';'; $jshandler .= 'document.forms[\'add'.$i.'\'].submit();'; @@ -293,14 +294,18 @@ class local_sharedresources_renderer extends plugin_renderer_base { // Check deployable moodle activity. if (file_exists($CFG->dirroot.'/blocks/activity_publisher/lib/activity_publisher.class.php')) { include_once($CFG->dirroot.'/blocks/activity_publisher/lib/activity_publisher.class.php'); - $cmdtemplate->strdeployincourse = get_string('deployincourse', 'block_activity_publisher'); - /* - $jshandler = 'javascript:document.forms[\'add'.$i.'\'].mode.value = \'deploy\';'; - $jshandler = 'document.forms[\'add'.$i.'\'].submit();'; - */ + $cmdtemplate->deployincoursestr = get_string('deployincourse', 'block_activity_publisher'); $cmdtemplate->isdeployable = true; } } + + if ($isplayablemedia) { + if (file_exists($CFG->dirroot.'/blocks/activity_publisher/lib/activity_publisher.class.php')) { + $cmdtemplate->deployinmplayerstr = get_string('deployinmplayer', 'mediaplayer'); + $cmdtemplate->isvideo = true; + $cmdtemplate->formurl = new moodle_url('/mod/mplayer/deployincourse.php'); + } + } } $template->rescommands = $this->render_from_template('local_sharedresources/resourcecommands', $cmdtemplate); } @@ -438,35 +443,6 @@ class local_sharedresources_renderer extends plugin_renderer_base { return $str; } - - /** - * TODO : May be obsolete, possibly delete - */ - public function update_resourcepage_icon() { - global $CFG, $USER; - - if (!isloggedin()) { - return ''; - } - - if (!empty($USER->editing)) { - $string = get_string('updateresourcepageoff', 'sharedresource'); - $edit = '0'; - } else { - $string = get_string('updateresourcepageon', 'sharedresource'); - $edit = '1'; - } - - $updateurl = new moodle_url('/local/sharedresources/index.php'); - $str = '<form '.$CFG->frametarget.' method="get" action="'.$updateurl.'">'; - $str .= '<div>'; - $str .= '<input type="hidden" name="edit" value="'.$edit.'" />'; - $str .= '<input type="submit" value="'.$string.'" />'; - $str .= '</div></form>'; - - return $str; - } - public function thumbnail($resource) { static $fs; static $context; @@ -569,7 +545,7 @@ class local_sharedresources_renderer extends plugin_renderer_base { public function searchlink() { $str = ''; - $searchstr = get_string('searchengine', 'local_sharedresources'); + $searchstr = get_string('searchinlibrary', 'local_sharedresources'); $exploreurl = new moodle_url('/local/sharedresources/index.php'); $str .= '<div id="sharedresources-link-to-search">'; $str .= '<a href="'.$exploreurl.'"><input type="button" value="'.$searchstr.'"></a>'; @@ -591,4 +567,14 @@ class local_sharedresources_renderer extends plugin_renderer_base { return $str; } + + /** + * Prints a taxonomy selector if more than one activated. + */ + public function taxonomy_select() { + global $DB; + + $enabledtaxonomies = $DB->get_records('sharedresource_classif', array('enabled' => true)); + + } } \ No newline at end of file diff --git a/settings.php b/settings.php index f06160e..fccee99 100644 --- a/settings.php +++ b/settings.php @@ -36,15 +36,28 @@ if (is_dir($CFG->dirroot.'/local/adminsettings')) { $hasconfig = $hassiteconfig = has_capability($capability, context_system::instance()); } -if ($hasconfig) { +$shcaps = array( + 'repository/sharedresouces:use', + 'repository/sharedresouces:view', + 'repository/sharedresouces:manage', +); + +$usecap = sharedresources_has_capability_somewhere('repository/sharedresources:use', false, false, false, CONTEXT_COURSECAT.','.CONTEXT_COURSE); +$viewcap = sharedresources_has_capability_somewhere('repository/sharedresources:view', false, false, false, CONTEXT_COURSECAT.','.CONTEXT_COURSE); +$managecap = sharedresources_has_capability_somewhere('repository/sharedresources:manage', false, false, false, CONTEXT_COURSECAT.','.CONTEXT_COURSE); + +if ($hasconfig || $usecap || $viewcap || $managecap) { // Needs this condition or there is error on login page. - $ADMIN->add('root', new admin_category('resources', get_string('resources', 'local_sharedresources'))); + if ($DB->get_field('modules', 'visible', array('name' => 'sharedresource'))) { - $label = get_string('pluginname', 'local_sharedresources'); - $pageurl = new moodle_url('/local/sharedresources/index.php'); - $settingspage = new admin_externalpage('resourcelibrary', $label, $pageurl, 'repository/sharedresources:view'); - $ADMIN->add('resources', $settingspage); + $ADMIN->add('root', new admin_category('resources', get_string('resources', 'local_sharedresources'))); + + $label = get_string('pluginname', 'local_sharedresources'); + $pageurl = new moodle_url('/local/sharedresources/index.php'); + $settingspage = new admin_externalpage('resourcelibrary', $label, $pageurl, 'repository/sharedresources:view'); + $ADMIN->add('resources', $settingspage); + } } if ($hassiteconfig) { $settings = new admin_settingpage('local_sharedresources', get_string('pluginname', 'sharedresource')); @@ -58,20 +71,37 @@ if ($hassiteconfig) { $purposes = array(); $purposefield = $mtdstandard->getTaxonomyPurposeElement(); - foreach ($purposefield->values as $purpose) { - $purposes[$purpose] = get_string(clean_string_key($purpose), 'sharedmetadata_'.$config->schema); + if ($purposefield) { + foreach ($purposefield->values as $purpose) { + $purposes[$purpose] = get_string(clean_string_key($purpose), 'sharedmetadata_'.$config->schema); + } + + $key = 'local_sharedresources/defaulttaxonomypurposeonimport'; + $label = get_string('configdefaulttaxonomypurposeonimport', 'local_sharedresources'); + $desc = get_string('configdefaulttaxonomypurposeonimport_desc', 'local_sharedresources'); + $settings->add(new admin_setting_configselect($key, $label, $desc, 0, $purposes)); + } + + $defaultpages = array( + 'index' => get_string('searchengine', 'local_sharedresources') + ); + + $plugin = sharedresource_get_plugin($config->schema); + if (!empty($plugin->getTaxonomyValueElement())) { + $defaultpages['browse'] = get_string('browser', 'local_sharedresources'); } - $key = 'local_sharedresources/defaulttaxonomypurposeonimport'; - $label = get_string('defaulttaxonomypurposeonimport', 'local_sharedresources'); - $desc = get_string('configdefaulttaxonomypurposeonimport', 'local_sharedresources'); - $settings->add(new admin_setting_configselect($key, $label, $desc, 0, $purposes)); + $key = 'local_sharedresources/defaultlibraryindexpage'; + $label = get_string('configdefaultlibraryindexpage', 'local_sharedresources'); + $desc = get_string('configdefaultlibraryindexpage_desc', 'local_sharedresources'); + $settings->add(new admin_setting_configselect($key, $label, $desc, 'index', $defaultpages)); } $key = 'local_sharedresources/privatecatalog'; - $label = get_string('private_catalog', 'local_sharedresources'); - $desc = get_string('config_private_catalog', 'local_sharedresources'); - $settings->add(new admin_setting_configcheckbox($key, $label, $desc, 1)); + $label = get_string('configprivatecatalog', 'local_sharedresources'); + $desc = get_string('configprivatecatalog_desc', 'local_sharedresources'); + $default = true; + $settings->add(new admin_setting_configcheckbox($key, $label, $desc, $default)); $plugins = core_component::get_plugin_list('local/sharedresources/plugins'); foreach ($plugins as $plugin) { diff --git a/templates/resourcebody.mustache b/templates/resourcebody.mustache index 0213575..0aa49e4 100644 --- a/templates/resourcebody.mustache +++ b/templates/resourcebody.mustache @@ -23,6 +23,7 @@ * mod/sharedresource/amd/view.js }} +<!-- resourcebody --> <div class="resource-item"> <div class="sharedresource-heading"> @@ -42,35 +43,36 @@ <a class="sharedressource-toggle-handle"><img id="sharedresource-toggle-{{identifier}}" src="{{handlepixurl}}"></a> {{^uses}} - <div class="resource-usage">{{strnotused}}</div> + <div class="resource-usage">{{notusedstr}}</div> {{/uses}} {{#uses}} <div class="resource-usage"><a href="{{courselisturl}}">{{used}}</a></div> {{/uses}} - <div class="resource-views">{{strviewed}}</div> + <div class="resource-views">{{viewedstr}}</div> <div class="resource-likes"> - {{strliked}} + {{likedstr}} <span id="sharedresource-likes-{{identifier}}"> {{{stars}}} </span> - <a class="sharedresource-mark-like" id="sharedresource-{{identifier}}">{{strmarkliked}}</a> + <a class="sharedresource-mark-like" id="sharedresource-{{identifier}}">{{marklikedstr}}</a> </div> </div> <div class="generalbox resource-info" id="sharedresource-info-{{identifier}}" style="display:none"> {{#description}} - <div class="sharedreosurce-description"> + <div class="sharedresource-description"> <div class="resource-thumbnail">{{{thumbnail}}}</div> <div class="resource-description">{{{description}}}</div> - <div class="smalltext">{{strkeywords}}: <b>{{keywords}}</b></div> + <div class="smalltext">{{keywordsstr}}: <b>{{keywords}}</b></div> </div> {{/description}} </div> {{{rescommands}}} -</div> \ No newline at end of file +</div> +<!-- /resourcebody --> diff --git a/templates/resourcecategory.mustache b/templates/resourcecategory.mustache index baa18f5..eff15b4 100644 --- a/templates/resourcecategory.mustache +++ b/templates/resourcecategory.mustache @@ -23,7 +23,8 @@ * none }} -<div class="browser-'.$current.'-category row-fluid"> +<!-- resourcecategory --> +<div class="browser-{{current}}-category row-fluid"> {{#hasup}} <div class="browser-'.$current.'-category-label span2"> @@ -43,3 +44,4 @@ <div id="sharedresource-browser-cat{{catid}}" class="browser-{{current}}-category-count span1"></div> </div> +<!-- /resourcecategory --> diff --git a/templates/resourcecommands.mustache b/templates/resourcecommands.mustache index 64fb334..3489902 100644 --- a/templates/resourcecommands.mustache +++ b/templates/resourcecommands.mustache @@ -23,6 +23,7 @@ * mod/sharedresource/amd/view.js }} +<!-- resourcecommands --> <div class="generalbox sharedresources-commands"> {{#isremote}} @@ -45,19 +46,24 @@ </form> {{^isltitool}} -<a href="javascript:document.forms[\'add'.$i.'\'].submit();">'.$addtocourse.'</a> +<a id="id-shared-{{i}}">{{addtocoursestr}}</a> {{#islocalizable}} -<a class="sharedresource-localize" id="sharedresource-localize-{{identifier}}">'.$localizetocourse.'</a> -{{/islocalizable}}}} + - <a id="id-local-{{i}}" class="sharedresource-actionlink">{{localizetocoursestr}}</a> +{{/islocalizable}} {{/isltitool}} {{#isltitool}} - - <a class="sharedresource-lti-install" id="sharedresource-lti-install-{{identifier}}">{{strinstalltool}}</a> -{{/isltitool}}} + - <a id="id-ltiinstall-{{i}}" class="sharedresource-actionlink">{{installtoolstr}}</a> +{{/isltitool}} + +{{#isdeployable}} + - <a id="id-deploy-{{i}}" class="sharedresource-actionlink">{{deployincoursestr}}</a> +{{/isdeployable}} -{{#isdeployeable}} - - <a href="'.$jshandler.'">'.$deployincourse.'</a> -{{/isdeployeable}} +{{#isvideo}} + - <a id="id-mplayerdeploy-{{i}}" class="sharedresource-actionlink">{{deployinmplayerstr}}</a> +{{/isvideo}} </div> +<!-- /resourcecommands --> diff --git a/templates/searchform.mustache b/templates/searchform.mustache index ca70f09..962ae5a 100644 --- a/templates/searchform.mustache +++ b/templates/searchform.mustache @@ -21,6 +21,7 @@ * none }} +<!-- searchform --> {{^haswidgets)) <br/> <center>{{strnowidgets}}</center> @@ -38,7 +39,7 @@ <input type="hidden" name="repo" value="{{repo}}"> <input type="hidden" name="offset" value="{{offset}}"> <fieldset> -<legend>{{strsearchinlibrary}}</legend> +<legend>{{searchinlibrarystr}}</legend> <table> <tr> @@ -50,11 +51,12 @@ </tr> <tr> <td colspan="{{n}}" align="center"> - input type="submit" name="go" value="{{strsearch}}" /> + input type="submit" name="go" value="{{searchstr}}" /> </td> </tr> </table> </fieldset> </form> -{{/haswidgets}} \ No newline at end of file +{{/haswidgets}} +<!-- /searchform --> diff --git a/templates/searchform_tableless.mustache b/templates/searchform_tableless.mustache index 2c807b0..9cceba7 100644 --- a/templates/searchform_tableless.mustache +++ b/templates/searchform_tableless.mustache @@ -23,10 +23,11 @@ * none }} +<!-- searchform_tableless --> {{^haswidgets}} <div class="block"> <div class="content"> - <center>{{strnowidgets}}</center><br/> + <center>{{nowidgetsstr}}</center><br/> </div> </div> {{/haswidgets}} @@ -45,7 +46,7 @@ <div class="block"> <div id="sharedresource-search-button content"> <center> - <input type="submit" name="go" value="{{strsearch}}" />'; + <input type="submit" name="go" value="{{searchstr}}" /> </center> </div> </div> @@ -59,7 +60,7 @@ <div class="block" id="sharedresource-search-button"> <div class="content"> <center> - <input type="submit" name="go" value="{{strsearch}}" /> + <input type="submit" name="go" value="{{searchstr}}" /> </center> </div> </div> @@ -67,3 +68,4 @@ </form> </div> {{/haswidgets}} +<!-- /searchform_tableless --> diff --git a/version.php b/version.php index 7e8a030..1fe4407 100644 --- a/version.php +++ b/version.php @@ -31,4 +31,4 @@ $plugin->release = '3.1.0 (Build 2014032700)'; $plugin->maturity = MATURITY_RC; // Non moodle attributes. -$plugin->codeincrement = '3.1.0000'; \ No newline at end of file +$plugin->codeincrement = '3.1.0001'; \ No newline at end of file -- GitLab