jekyll-theme-glueckkanja 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +12 -0
  3. data/README.md +64 -0
  4. data/_includes/blogtitlepic.html +25 -0
  5. data/_includes/contactform.html +77 -0
  6. data/_includes/footer.html +14 -0
  7. data/_includes/hc-document-icon.html +12 -0
  8. data/_includes/hc-listings.html +15 -0
  9. data/_includes/head.html +41 -0
  10. data/_includes/keyvisual.html +7 -0
  11. data/_includes/navigation.html +64 -0
  12. data/_includes/register-modal.html +37 -0
  13. data/_includes/scripts.html +126 -0
  14. data/_includes/sitelinks.html +57 -0
  15. data/_layouts/banner.html +54 -0
  16. data/_layouts/default-with-image.html +25 -0
  17. data/_layouts/default.html +24 -0
  18. data/_layouts/docs-default.html +72 -0
  19. data/_layouts/framed.html +47 -0
  20. data/_layouts/hc-archive.html +12 -0
  21. data/_layouts/hc-default.html +99 -0
  22. data/_layouts/hc-post.html +59 -0
  23. data/_layouts/page.html +5 -0
  24. data/_layouts/post.html +24 -0
  25. data/_sass/_docs-layout.scss +482 -0
  26. data/_sass/_docs-mixins.scss +34 -0
  27. data/_sass/_hc-dark-theme.scss +38 -0
  28. data/_sass/_hc-elements.scss +86 -0
  29. data/_sass/_hc-header.scss +104 -0
  30. data/_sass/_hc-tutorials.scss +251 -0
  31. data/_sass/_rangeslider.scss +111 -0
  32. data/_sass/_variables.scss +89 -0
  33. data/_sass/font-awesome/scss/_animated.scss +34 -0
  34. data/_sass/font-awesome/scss/_bordered-pulled.scss +25 -0
  35. data/_sass/font-awesome/scss/_core.scss +12 -0
  36. data/_sass/font-awesome/scss/_fixed-width.scss +6 -0
  37. data/_sass/font-awesome/scss/_icons.scss +789 -0
  38. data/_sass/font-awesome/scss/_larger.scss +13 -0
  39. data/_sass/font-awesome/scss/_list.scss +19 -0
  40. data/_sass/font-awesome/scss/_mixins.scss +60 -0
  41. data/_sass/font-awesome/scss/_path.scss +15 -0
  42. data/_sass/font-awesome/scss/_rotated-flipped.scss +20 -0
  43. data/_sass/font-awesome/scss/_screen-reader.scss +5 -0
  44. data/_sass/font-awesome/scss/_stacked.scss +20 -0
  45. data/_sass/font-awesome/scss/_variables.scss +800 -0
  46. data/_sass/font-awesome/scss/font-awesome.scss +18 -0
  47. data/assets/azurebin/ChangeLog +941 -0
  48. data/assets/azurebin/IMDisplay.exe +0 -0
  49. data/assets/azurebin/ImageMagick.rdf +166 -0
  50. data/assets/azurebin/LICENSE.txt +103 -0
  51. data/assets/azurebin/NOTICE.txt +1324 -0
  52. data/assets/azurebin/README.txt +105 -0
  53. data/assets/azurebin/colors.xml +28 -0
  54. data/assets/azurebin/compare.exe +0 -0
  55. data/assets/azurebin/composite.exe +0 -0
  56. data/assets/azurebin/configure.xml +20 -0
  57. data/assets/azurebin/conjure.exe +0 -0
  58. data/assets/azurebin/convert.exe +0 -0
  59. data/assets/azurebin/dcraw.exe +0 -0
  60. data/assets/azurebin/delegates.xml +100 -0
  61. data/assets/azurebin/english.xml +1682 -0
  62. data/assets/azurebin/ffmpeg.exe +0 -0
  63. data/assets/azurebin/hp2xx.exe +0 -0
  64. data/assets/azurebin/identify.exe +0 -0
  65. data/assets/azurebin/index.html +280 -0
  66. data/assets/azurebin/locale.xml +48 -0
  67. data/assets/azurebin/log.xml +80 -0
  68. data/assets/azurebin/magic.xml +23 -0
  69. data/assets/azurebin/magick.exe +0 -0
  70. data/assets/azurebin/mime.xml +1145 -0
  71. data/assets/azurebin/mogrify.exe +0 -0
  72. data/assets/azurebin/montage.exe +0 -0
  73. data/assets/azurebin/policy.xml +75 -0
  74. data/assets/azurebin/quantization-table.xml +68 -0
  75. data/assets/azurebin/sRGB.icc +0 -0
  76. data/assets/azurebin/stream.exe +0 -0
  77. data/assets/azurebin/thresholds.xml +334 -0
  78. data/assets/azurebin/type-ghostscript.xml +55 -0
  79. data/assets/azurebin/type.xml +21 -0
  80. data/assets/azureroot/.deploy.cmd +150 -0
  81. data/assets/azureroot/.deployment +2 -0
  82. data/assets/azureroot/_config.yml +165 -0
  83. data/assets/azureroot/dot.gitignore +11 -0
  84. data/assets/azureroot/web.config +93 -0
  85. data/assets/css/app.scss +1900 -0
  86. data/assets/docs/changelog.html +28 -0
  87. data/assets/docs/index.md +7 -0
  88. data/assets/docs/search.html +35 -0
  89. data/assets/docs/uservoice.html +17 -0
  90. data/assets/favicons/100percentcloud.png +0 -0
  91. data/assets/favicons/apple-konnekt-icon-120x120.png +0 -0
  92. data/assets/favicons/apple-konnekt-icon-152x152.png +0 -0
  93. data/assets/favicons/apple-konnekt-icon-60x60.png +0 -0
  94. data/assets/favicons/apple-konnekt-icon-76x76.png +0 -0
  95. data/assets/favicons/favicon-konnekt-144.png +0 -0
  96. data/assets/favicons/favicon-konnekt-96.png +0 -0
  97. data/assets/favicons/favicon-konnekt.ico +0 -0
  98. data/assets/favicons/favicon-konnekt.png +0 -0
  99. data/assets/favicons/gk-boxes.ico +0 -0
  100. data/assets/favicons/gk-boxes.png +0 -0
  101. data/assets/favicons/gk-logo-white.svg +39 -0
  102. data/assets/favicons/gk-logo.svg +1 -0
  103. data/assets/help-center/faq.html +33 -0
  104. data/assets/help-center/index.html +54 -0
  105. data/assets/help-center/search.html +36 -0
  106. data/assets/help-center/videos.html +15 -0
  107. data/assets/js/guk.js +12 -0
  108. data/assets/js/hc.js +94 -0
  109. data/assets/js/lunr.min.js +7 -0
  110. data/assets/js/mandrill.min.js +122 -0
  111. data/assets/js/rangeslider.js +494 -0
  112. data/assets/js/rangeslider.min.js +2 -0
  113. data/assets/js/search.js +103 -0
  114. data/assets/misc/general-glitch.html +9 -0
  115. data/assets/misc/imprint.html +40 -0
  116. data/assets/misc/privacy-policy.html +138 -0
  117. data/assets/misc/terms-of-service.html +138 -0
  118. data/assets/nav/arrow-up.png +0 -0
  119. data/assets/nav/arrow-up.svg +13 -0
  120. data/assets/nav/cbp-sprite.png +0 -0
  121. data/assets/nav/dotline.png +0 -0
  122. data/assets/nav/splash.png +0 -0
  123. data/assets/nav/splash@2x.png +0 -0
  124. data/assets/video/meerkat-404.jpg +0 -0
  125. data/assets/video/meerkat-404.mp4 +0 -0
  126. data/assets/video/meerkat-404.ogv +0 -0
  127. data/assets/video/meerkat-404.webm +0 -0
  128. metadata +394 -0
@@ -0,0 +1,494 @@
1
+ /*! rangeslider.js - v2.3.0 | (c) 2016 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */
2
+ (function(factory) {
3
+ 'use strict';
4
+
5
+ if (typeof define === 'function' && define.amd) {
6
+ // AMD. Register as an anonymous module.
7
+ define(['jquery'], factory);
8
+ } else if (typeof exports === 'object') {
9
+ // CommonJS
10
+ module.exports = factory(require('jquery'));
11
+ } else {
12
+ // Browser globals
13
+ factory(jQuery);
14
+ }
15
+ }(function($) {
16
+ 'use strict';
17
+
18
+ // Polyfill Number.isNaN(value)
19
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
20
+ Number.isNaN = Number.isNaN || function(value) {
21
+ return typeof value === 'number' && value !== value;
22
+ };
23
+
24
+ /**
25
+ * Range feature detection
26
+ * @return {Boolean}
27
+ */
28
+ function supportsRange() {
29
+ var input = document.createElement('input');
30
+ input.setAttribute('type', 'range');
31
+ return input.type !== 'text';
32
+ }
33
+
34
+ var pluginName = 'rangeslider',
35
+ pluginIdentifier = 0,
36
+ hasInputRangeSupport = supportsRange(),
37
+ defaults = {
38
+ polyfill: true,
39
+ orientation: 'horizontal',
40
+ rangeClass: 'rangeslider',
41
+ disabledClass: 'rangeslider--disabled',
42
+ activeClass: 'rangeslider--active',
43
+ horizontalClass: 'rangeslider--horizontal',
44
+ verticalClass: 'rangeslider--vertical',
45
+ fillClass: 'rangeslider__fill',
46
+ handleClass: 'rangeslider__handle',
47
+ startEvent: ['mousedown', 'touchstart', 'pointerdown'],
48
+ moveEvent: ['mousemove', 'touchmove', 'pointermove'],
49
+ endEvent: ['mouseup', 'touchend', 'pointerup']
50
+ },
51
+ constants = {
52
+ orientation: {
53
+ horizontal: {
54
+ dimension: 'width',
55
+ direction: 'left',
56
+ directionStyle: 'left',
57
+ coordinate: 'x'
58
+ },
59
+ vertical: {
60
+ dimension: 'height',
61
+ direction: 'top',
62
+ directionStyle: 'bottom',
63
+ coordinate: 'y'
64
+ }
65
+ }
66
+ };
67
+
68
+ /**
69
+ * Delays a function for the given number of milliseconds, and then calls
70
+ * it with the arguments supplied.
71
+ *
72
+ * @param {Function} fn [description]
73
+ * @param {Number} wait [description]
74
+ * @return {Function}
75
+ */
76
+ function delay(fn, wait) {
77
+ var args = Array.prototype.slice.call(arguments, 2);
78
+ return setTimeout(function(){ return fn.apply(null, args); }, wait);
79
+ }
80
+
81
+ /**
82
+ * Returns a debounced function that will make sure the given
83
+ * function is not triggered too much.
84
+ *
85
+ * @param {Function} fn Function to debounce.
86
+ * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)
87
+ * @return {Function}
88
+ */
89
+ function debounce(fn, debounceDuration) {
90
+ debounceDuration = debounceDuration || 100;
91
+ return function() {
92
+ if (!fn.debouncing) {
93
+ var args = Array.prototype.slice.apply(arguments);
94
+ fn.lastReturnVal = fn.apply(window, args);
95
+ fn.debouncing = true;
96
+ }
97
+ clearTimeout(fn.debounceTimeout);
98
+ fn.debounceTimeout = setTimeout(function(){
99
+ fn.debouncing = false;
100
+ }, debounceDuration);
101
+ return fn.lastReturnVal;
102
+ };
103
+ }
104
+
105
+ /**
106
+ * Check if a `element` is visible in the DOM
107
+ *
108
+ * @param {Element} element
109
+ * @return {Boolean}
110
+ */
111
+ function isHidden(element) {
112
+ return (
113
+ element && (
114
+ element.offsetWidth === 0 ||
115
+ element.offsetHeight === 0 ||
116
+ // Also Consider native `<details>` elements.
117
+ element.open === false
118
+ )
119
+ );
120
+ }
121
+
122
+ /**
123
+ * Get hidden parentNodes of an `element`
124
+ *
125
+ * @param {Element} element
126
+ * @return {[type]}
127
+ */
128
+ function getHiddenParentNodes(element) {
129
+ var parents = [],
130
+ node = element.parentNode;
131
+
132
+ while (isHidden(node)) {
133
+ parents.push(node);
134
+ node = node.parentNode;
135
+ }
136
+ return parents;
137
+ }
138
+
139
+ /**
140
+ * Returns dimensions for an element even if it is not visible in the DOM.
141
+ *
142
+ * @param {Element} element
143
+ * @param {String} key (e.g. offsetWidth …)
144
+ * @return {Number}
145
+ */
146
+ function getDimension(element, key) {
147
+ var hiddenParentNodes = getHiddenParentNodes(element),
148
+ hiddenParentNodesLength = hiddenParentNodes.length,
149
+ inlineStyle = [],
150
+ dimension = element[key];
151
+
152
+ // Used for native `<details>` elements
153
+ function toggleOpenProperty(element) {
154
+ if (typeof element.open !== 'undefined') {
155
+ element.open = (element.open) ? false : true;
156
+ }
157
+ }
158
+
159
+ if (hiddenParentNodesLength) {
160
+ for (var i = 0; i < hiddenParentNodesLength; i++) {
161
+
162
+ // Cache style attribute to restore it later.
163
+ inlineStyle[i] = hiddenParentNodes[i].style.cssText;
164
+
165
+ // visually hide
166
+ if (hiddenParentNodes[i].style.setProperty) {
167
+ hiddenParentNodes[i].style.setProperty('display', 'block', 'important');
168
+ } else {
169
+ hiddenParentNodes[i].style.cssText += ';display: block !important';
170
+ }
171
+ hiddenParentNodes[i].style.height = '0';
172
+ hiddenParentNodes[i].style.overflow = 'hidden';
173
+ hiddenParentNodes[i].style.visibility = 'hidden';
174
+ toggleOpenProperty(hiddenParentNodes[i]);
175
+ }
176
+
177
+ // Update dimension
178
+ dimension = element[key];
179
+
180
+ for (var j = 0; j < hiddenParentNodesLength; j++) {
181
+
182
+ // Restore the style attribute
183
+ hiddenParentNodes[j].style.cssText = inlineStyle[j];
184
+ toggleOpenProperty(hiddenParentNodes[j]);
185
+ }
186
+ }
187
+ return dimension;
188
+ }
189
+
190
+ /**
191
+ * Returns the parsed float or the default if it failed.
192
+ *
193
+ * @param {String} str
194
+ * @param {Number} defaultValue
195
+ * @return {Number}
196
+ */
197
+ function tryParseFloat(str, defaultValue) {
198
+ var value = parseFloat(str);
199
+ return Number.isNaN(value) ? defaultValue : value;
200
+ }
201
+
202
+ /**
203
+ * Capitalize the first letter of string
204
+ *
205
+ * @param {String} str
206
+ * @return {String}
207
+ */
208
+ function ucfirst(str) {
209
+ return str.charAt(0).toUpperCase() + str.substr(1);
210
+ }
211
+
212
+ /**
213
+ * Plugin
214
+ * @param {String} element
215
+ * @param {Object} options
216
+ */
217
+ function Plugin(element, options) {
218
+ this.$window = $(window);
219
+ this.$document = $(document);
220
+ this.$element = $(element);
221
+ this.options = $.extend( {}, defaults, options );
222
+ this.polyfill = this.options.polyfill;
223
+ this.orientation = this.$element[0].getAttribute('data-orientation') || this.options.orientation;
224
+ this.onInit = this.options.onInit;
225
+ this.onSlide = this.options.onSlide;
226
+ this.onSlideEnd = this.options.onSlideEnd;
227
+ this.DIMENSION = constants.orientation[this.orientation].dimension;
228
+ this.DIRECTION = constants.orientation[this.orientation].direction;
229
+ this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle;
230
+ this.COORDINATE = constants.orientation[this.orientation].coordinate;
231
+
232
+ // Plugin should only be used as a polyfill
233
+ if (this.polyfill) {
234
+ // Input range support?
235
+ if (hasInputRangeSupport) { return false; }
236
+ }
237
+
238
+ this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);
239
+ this.startEvent = this.options.startEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
240
+ this.moveEvent = this.options.moveEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
241
+ this.endEvent = this.options.endEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
242
+ this.toFixed = (this.step + '').replace('.', '').length - 1;
243
+ this.$fill = $('<div class="' + this.options.fillClass + '" />');
244
+ this.$handle = $('<div class="' + this.options.handleClass + '" />');
245
+ this.$range = $('<div class="' + this.options.rangeClass + ' ' + this.options[this.orientation + 'Class'] + '" id="' + this.identifier + '" />').insertAfter(this.$element).prepend(this.$fill, this.$handle);
246
+
247
+ // visually hide the input
248
+ this.$element.css({
249
+ 'position': 'absolute',
250
+ 'width': '1px',
251
+ 'height': '1px',
252
+ 'overflow': 'hidden',
253
+ 'opacity': '0'
254
+ });
255
+
256
+ // Store context
257
+ this.handleDown = $.proxy(this.handleDown, this);
258
+ this.handleMove = $.proxy(this.handleMove, this);
259
+ this.handleEnd = $.proxy(this.handleEnd, this);
260
+
261
+ this.init();
262
+
263
+ // Attach Events
264
+ var _this = this;
265
+ this.$window.on('resize.' + this.identifier, debounce(function() {
266
+ // Simulate resizeEnd event.
267
+ delay(function() { _this.update(false, false); }, 300);
268
+ }, 20));
269
+
270
+ this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);
271
+
272
+ // Listen to programmatic value changes
273
+ this.$element.on('change.' + this.identifier, function(e, data) {
274
+ if (data && data.origin === _this.identifier) {
275
+ return;
276
+ }
277
+
278
+ var value = e.target.value,
279
+ pos = _this.getPositionFromValue(value);
280
+ _this.setPosition(pos);
281
+ });
282
+ }
283
+
284
+ Plugin.prototype.init = function() {
285
+ this.update(true, false);
286
+
287
+ if (this.onInit && typeof this.onInit === 'function') {
288
+ this.onInit();
289
+ }
290
+ };
291
+
292
+ Plugin.prototype.update = function(updateAttributes, triggerSlide) {
293
+ updateAttributes = updateAttributes || false;
294
+
295
+ if (updateAttributes) {
296
+ this.min = tryParseFloat(this.$element[0].getAttribute('min'), 0);
297
+ this.max = tryParseFloat(this.$element[0].getAttribute('max'), 100);
298
+ this.value = tryParseFloat(this.$element[0].value, Math.round(this.min + (this.max-this.min)/2));
299
+ this.step = tryParseFloat(this.$element[0].getAttribute('step'), 1);
300
+ }
301
+
302
+ this.handleDimension = getDimension(this.$handle[0], 'offset' + ucfirst(this.DIMENSION));
303
+ this.rangeDimension = getDimension(this.$range[0], 'offset' + ucfirst(this.DIMENSION));
304
+ this.maxHandlePos = this.rangeDimension - this.handleDimension;
305
+ this.grabPos = this.handleDimension / 2;
306
+ this.position = this.getPositionFromValue(this.value);
307
+
308
+ // Consider disabled state
309
+ if (this.$element[0].disabled) {
310
+ this.$range.addClass(this.options.disabledClass);
311
+ } else {
312
+ this.$range.removeClass(this.options.disabledClass);
313
+ }
314
+
315
+ this.setPosition(this.position, triggerSlide);
316
+ };
317
+
318
+ Plugin.prototype.handleDown = function(e) {
319
+ e.preventDefault();
320
+ this.$document.on(this.moveEvent, this.handleMove);
321
+ this.$document.on(this.endEvent, this.handleEnd);
322
+
323
+ // add active class because Firefox is ignoring
324
+ // the handle:active pseudo selector because of `e.preventDefault();`
325
+ this.$range.addClass(this.options.activeClass);
326
+
327
+ // If we click on the handle don't set the new position
328
+ if ((' ' + e.target.className + ' ').replace(/[\n\t]/g, ' ').indexOf(this.options.handleClass) > -1) {
329
+ return;
330
+ }
331
+
332
+ var pos = this.getRelativePosition(e),
333
+ rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],
334
+ handlePos = this.getPositionFromNode(this.$handle[0]) - rangePos,
335
+ setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);
336
+
337
+ this.setPosition(setPos);
338
+
339
+ if (pos >= handlePos && pos < handlePos + this.handleDimension) {
340
+ this.grabPos = pos - handlePos;
341
+ }
342
+ };
343
+
344
+ Plugin.prototype.handleMove = function(e) {
345
+ e.preventDefault();
346
+ var pos = this.getRelativePosition(e);
347
+ var setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);
348
+ this.setPosition(setPos);
349
+ };
350
+
351
+ Plugin.prototype.handleEnd = function(e) {
352
+ e.preventDefault();
353
+ this.$document.off(this.moveEvent, this.handleMove);
354
+ this.$document.off(this.endEvent, this.handleEnd);
355
+
356
+ this.$range.removeClass(this.options.activeClass);
357
+
358
+ // Ok we're done fire the change event
359
+ this.$element.trigger('change', { origin: this.identifier });
360
+
361
+ if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {
362
+ this.onSlideEnd(this.position, this.value);
363
+ }
364
+ };
365
+
366
+ Plugin.prototype.cap = function(pos, min, max) {
367
+ if (pos < min) { return min; }
368
+ if (pos > max) { return max; }
369
+ return pos;
370
+ };
371
+
372
+ Plugin.prototype.setPosition = function(pos, triggerSlide) {
373
+ var value, newPos;
374
+
375
+ if (triggerSlide === undefined) {
376
+ triggerSlide = true;
377
+ }
378
+
379
+ // Snapping steps
380
+ value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));
381
+ newPos = this.getPositionFromValue(value);
382
+
383
+ // Update ui
384
+ this.$fill[0].style[this.DIMENSION] = (newPos + this.grabPos) + 'px';
385
+ this.$handle[0].style[this.DIRECTION_STYLE] = newPos + 'px';
386
+ this.setValue(value);
387
+
388
+ // Update globals
389
+ this.position = newPos;
390
+ this.value = value;
391
+
392
+ if (triggerSlide && this.onSlide && typeof this.onSlide === 'function') {
393
+ this.onSlide(newPos, value);
394
+ }
395
+ };
396
+
397
+ // Returns element position relative to the parent
398
+ Plugin.prototype.getPositionFromNode = function(node) {
399
+ var i = 0;
400
+ while (node !== null) {
401
+ i += node.offsetLeft;
402
+ node = node.offsetParent;
403
+ }
404
+ return i;
405
+ };
406
+
407
+ Plugin.prototype.getRelativePosition = function(e) {
408
+ // Get the offset DIRECTION relative to the viewport
409
+ var ucCoordinate = ucfirst(this.COORDINATE),
410
+ rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],
411
+ pageCoordinate = 0;
412
+
413
+ if (typeof e.originalEvent['client' + ucCoordinate] !== 'undefined') {
414
+ pageCoordinate = e.originalEvent['client' + ucCoordinate];
415
+ }
416
+ else if (
417
+ e.originalEvent.touches &&
418
+ e.originalEvent.touches[0] &&
419
+ typeof e.originalEvent.touches[0]['client' + ucCoordinate] !== 'undefined'
420
+ ) {
421
+ pageCoordinate = e.originalEvent.touches[0]['client' + ucCoordinate];
422
+ }
423
+ else if(e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== 'undefined') {
424
+ pageCoordinate = e.currentPoint[this.COORDINATE];
425
+ }
426
+
427
+ return pageCoordinate - rangePos;
428
+ };
429
+
430
+ Plugin.prototype.getPositionFromValue = function(value) {
431
+ var percentage, pos;
432
+ percentage = (value - this.min)/(this.max - this.min);
433
+ pos = (!Number.isNaN(percentage)) ? percentage * this.maxHandlePos : 0;
434
+ return pos;
435
+ };
436
+
437
+ Plugin.prototype.getValueFromPosition = function(pos) {
438
+ var percentage, value;
439
+ percentage = ((pos) / (this.maxHandlePos || 1));
440
+ value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;
441
+ return Number((value).toFixed(this.toFixed));
442
+ };
443
+
444
+ Plugin.prototype.setValue = function(value) {
445
+ if (value === this.value && this.$element[0].value !== '') {
446
+ return;
447
+ }
448
+
449
+ // Set the new value and fire the `input` event
450
+ this.$element
451
+ .val(value)
452
+ .trigger('input', { origin: this.identifier });
453
+ };
454
+
455
+ Plugin.prototype.destroy = function() {
456
+ this.$document.off('.' + this.identifier);
457
+ this.$window.off('.' + this.identifier);
458
+
459
+ this.$element
460
+ .off('.' + this.identifier)
461
+ .removeAttr('style')
462
+ .removeData('plugin_' + pluginName);
463
+
464
+ // Remove the generated markup
465
+ if (this.$range && this.$range.length) {
466
+ this.$range[0].parentNode.removeChild(this.$range[0]);
467
+ }
468
+ };
469
+
470
+ // A really lightweight plugin wrapper around the constructor,
471
+ // preventing against multiple instantiations
472
+ $.fn[pluginName] = function(options) {
473
+ var args = Array.prototype.slice.call(arguments, 1);
474
+
475
+ return this.each(function() {
476
+ var $this = $(this),
477
+ data = $this.data('plugin_' + pluginName);
478
+
479
+ // Create a new instance.
480
+ if (!data) {
481
+ $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));
482
+ }
483
+
484
+ // Make it possible to access methods from public.
485
+ // e.g `$element.rangeslider('method');`
486
+ if (typeof options === 'string') {
487
+ data[options].apply(data, args);
488
+ }
489
+ });
490
+ };
491
+
492
+ return 'rangeslider.js is available in jQuery context e.g $(selector).rangeslider(options);';
493
+
494
+ }));