summaryrefslogtreecommitdiffstats
path: root/pyload/web/app/scripts/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/app/scripts/vendor')
-rw-r--r--pyload/web/app/scripts/vendor/jquery.omniwindow.js141
-rw-r--r--pyload/web/app/scripts/vendor/remaining.js149
2 files changed, 290 insertions, 0 deletions
diff --git a/pyload/web/app/scripts/vendor/jquery.omniwindow.js b/pyload/web/app/scripts/vendor/jquery.omniwindow.js
new file mode 100644
index 000000000..e1f0b8f77
--- /dev/null
+++ b/pyload/web/app/scripts/vendor/jquery.omniwindow.js
@@ -0,0 +1,141 @@
+// jQuery OmniWindow plugin
+// @version: 0.7.0
+// @author: Rudenka Alexander (mur.mailbox@gmail.com)
+// @license: MIT
+
+;(function($) {
+ "use strict";
+ $.fn.extend({
+ omniWindow: function(options) {
+
+ options = $.extend(true, {
+ animationsPriority: {
+ show: ['overlay', 'modal'],
+ hide: ['modal', 'overlay']
+ },
+ overlay: {
+ selector: '.ow-overlay',
+ hideClass: 'ow-closed',
+ animations: {
+ show: function(subjects, internalCallback) { return internalCallback(subjects); },
+ hide: function(subjects, internalCallback) { return internalCallback(subjects); },
+ internal: {
+ show: function(subjects){ subjects.overlay.removeClass(options.overlay.hideClass); },
+ hide: function(subjects){ subjects.overlay.addClass(options.overlay.hideClass); }
+ }
+ }
+ },
+ modal: {
+ hideClass: 'ow-closed',
+ animations: {
+ show: function(subjects, internalCallback) { return internalCallback(subjects); },
+ hide: function(subjects, internalCallback) { return internalCallback(subjects); },
+ internal: {
+ show: function(subjects){ subjects.modal.removeClass(options.modal.hideClass); },
+ hide: function(subjects){ subjects.modal.addClass(options.modal.hideClass); }
+ }
+ },
+ internal: {
+ stateAttribute: 'ow-active'
+ }
+ },
+ eventsNames: {
+ show: 'show.ow',
+ hide: 'hide.ow',
+ internal: {
+ overlayClick: 'click.ow',
+ keyboardKeyUp: 'keyup.ow'
+ }
+ },
+ callbacks: { // Callbacks execution chain
+ beforeShow: function(subjects, internalCallback) { return internalCallback(subjects); }, // 1 (stop if retruns false)
+ positioning: function(subjects, internalCallback) { return internalCallback(subjects); }, // 2
+ afterShow: function(subjects, internalCallback) { return internalCallback(subjects); }, // 3
+ beforeHide: function(subjects, internalCallback) { return internalCallback(subjects); }, // 4 (stop if retruns false)
+ afterHide: function(subjects, internalCallback) { return internalCallback(subjects); }, // 5
+ internal: {
+ beforeShow: function(subjects) {
+ if (subjects.modal.data(options.modal.internal.stateAttribute)) {
+ return false;
+ } else {
+ subjects.modal.data(options.modal.internal.stateAttribute, true);
+ return true;
+ }
+ },
+ afterShow: function(subjects) {
+ $(document).on(options.eventsNames.internal.keyboardKeyUp, function(e) {
+ if (e.keyCode === 27) { // if the key pressed is the ESC key
+ subjects.modal.trigger(options.eventsNames.hide);
+ }
+ });
+
+ subjects.overlay.on(options.eventsNames.internal.overlayClick, function(){
+ subjects.modal.trigger(options.eventsNames.hide);
+ });
+ },
+ positioning: function(subjects) {
+ subjects.modal.css('margin-left', Math.round(subjects.modal.outerWidth() / -2));
+ },
+ beforeHide: function(subjects) {
+ if (subjects.modal.data(options.modal.internal.stateAttribute)) {
+ subjects.modal.data(options.modal.internal.stateAttribute, false);
+ return true;
+ } else {
+ return false;
+ }
+ },
+ afterHide: function(subjects) {
+ subjects.overlay.off(options.eventsNames.internal.overlayClick);
+ $(document).off(options.eventsNames.internal.keyboardKeyUp);
+
+ subjects.overlay.css('display', ''); // clear inline styles after jQ animations
+ subjects.modal.css('display', '');
+ }
+ }
+ }
+ }, options);
+
+ var animate = function(process, subjects, callbackName) {
+ var first = options.animationsPriority[process][0],
+ second = options.animationsPriority[process][1];
+
+ options[first].animations[process](subjects, function(subjs) { // call USER's FIRST animation (depends on priority)
+ options[first].animations.internal[process](subjs); // call internal FIRST animation
+
+ options[second].animations[process](subjects, function(subjs) { // call USER's SECOND animation
+ options[second].animations.internal[process](subjs); // call internal SECOND animation
+
+ // then we need to call USER's
+ // afterShow of afterHide callback
+ options.callbacks[callbackName](subjects, options.callbacks.internal[callbackName]);
+ });
+ });
+ };
+
+ var showModal = function(subjects) {
+ if (!options.callbacks.beforeShow(subjects, options.callbacks.internal.beforeShow)) { return; } // cancel showing if beforeShow callback return false
+
+ options.callbacks.positioning(subjects, options.callbacks.internal.positioning);
+
+ animate('show', subjects, 'afterShow');
+ };
+
+ var hideModal = function(subjects) {
+ if (!options.callbacks.beforeHide(subjects, options.callbacks.internal.beforeHide)) { return; } // cancel hiding if beforeHide callback return false
+
+ animate('hide', subjects, 'afterHide');
+ };
+
+
+ var $overlay = $(options.overlay.selector);
+
+ return this.each(function() {
+ var $modal = $(this);
+ var subjects = {modal: $modal, overlay: $overlay};
+
+ $modal.bind(options.eventsNames.show, function(){ showModal(subjects); })
+ .bind(options.eventsNames.hide, function(){ hideModal(subjects); });
+ });
+ }
+ });
+})(jQuery); \ No newline at end of file
diff --git a/pyload/web/app/scripts/vendor/remaining.js b/pyload/web/app/scripts/vendor/remaining.js
new file mode 100644
index 000000000..d66a2931a
--- /dev/null
+++ b/pyload/web/app/scripts/vendor/remaining.js
@@ -0,0 +1,149 @@
+/**
+ * Javascript Countdown
+ * Copyright (c) 2009 Markus Hedlund
+ * Version 1.1
+ * Licensed under MIT license
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://labs.mimmin.com/countdown
+ */
+define([], function() {
+ var remaining = {
+ /**
+ * Get the difference of the passed date, and now. The different formats of the taget parameter are:
+ * January 12, 2009 15:14:00 (Month dd, yyyy hh:mm:ss)
+ * January 12, 2009 (Month dd, yyyy)
+ * 09,00,12,15,14,00 (yy,mm,dd,hh,mm,ss) Months range from 0-11, not 1-12.
+ * 09,00,12 (yy,mm,dd) Months range from 0-11, not 1-12.
+ * 500 (milliseconds)
+ * 2009-01-12 15:14:00 (yyyy-mm-dd hh-mm-ss)
+ * 2009-01-12 15:14 (yyyy-mm-dd hh-mm)
+ * @param target Target date. Can be either a date object or a string (formated like '24 December, 2010 15:00:00')
+ * @return Difference in seconds
+ */
+ getSeconds: function(target) {
+ var today = new Date();
+
+ if (typeof(target) == 'object') {
+ var targetDate = target;
+ } else {
+ var matches = target.match(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})(:(\d{2}))?/); // YYYY-MM-DD HH-MM-SS
+ if (matches != null) {
+ matches[7] = typeof(matches[7]) == 'undefined' ? '00' : matches[7];
+ var targetDate = new Date(matches[1], matches[2] - 1, matches[3], matches[4], matches[5], matches[7]);
+ } else {
+ var targetDate = new Date(target);
+ }
+ }
+
+ return Math.floor((targetDate.getTime() - today.getTime()) / 1000);
+ },
+
+ /**
+ * @param seconds Difference in seconds
+ * @param i18n A language object (see code)
+ * @param onlyLargestUnit Return only the largest unit (see documentation)
+ * @param hideEmpty Hide empty units (see documentation)
+ * @return String formated something like '1 week, 1 hours, 1 second'
+ */
+ getString: function(seconds, i18n, onlyLargestUnit, hideEmpty) {
+ if (seconds < 1) {
+ return '';
+ }
+
+ if (typeof(hideEmpty) == 'undefined' || hideEmpty == null) {
+ hideEmpty = true;
+ }
+ if (typeof(onlyLargestUnit) == 'undefined' || onlyLargestUnit == null) {
+ onlyLargestUnit = false;
+ }
+ if (typeof(i18n) == 'undefined' || i18n == null) {
+ i18n = {
+ weeks: ['week', 'weeks'],
+ days: ['day', 'days'],
+ hours: ['hour', 'hours'],
+ minutes: ['minute', 'minutes'],
+ seconds: ['second', 'seconds']
+ };
+ }
+
+ var units = {
+ weeks: 7 * 24 * 60 * 60,
+ days: 24 * 60 * 60,
+ hours: 60 * 60,
+ minutes: 60,
+ seconds: 1
+ };
+
+ var returnArray = [];
+ var value;
+ for (unit in units) {
+ value = units[unit];
+ if (seconds / value >= 1 || unit == 'seconds' || !hideEmpty) {
+ secondsConverted = Math.floor(seconds / value);
+ var i18nUnit = i18n[unit][secondsConverted == 1 ? 0 : 1];
+ returnArray.push(secondsConverted + ' ' + i18nUnit);
+ seconds -= secondsConverted * value;
+
+ if (onlyLargestUnit) {
+ break;
+ }
+ }
+ }
+ ;
+
+ return returnArray.join(', ');
+ },
+
+ /**
+ * @param seconds Difference in seconds
+ * @return String formated something like '169:00:01'
+ */
+ getStringDigital: function(seconds) {
+ if (seconds < 1) {
+ return '';
+ }
+
+ remainingTime = remaining.getArray(seconds);
+
+ for (index in remainingTime) {
+ remainingTime[index] = remaining.padNumber(remainingTime[index]);
+ }
+ ;
+
+ return remainingTime.join(':');
+ },
+
+ /**
+ * @param seconds Difference in seconds
+ * @return Array with hours, minutes and seconds
+ */
+ getArray: function(seconds) {
+ if (seconds < 1) {
+ return [];
+ }
+
+ var units = [60 * 60, 60, 1];
+
+ var returnArray = [];
+ var value;
+ for (index in units) {
+ value = units[index];
+ secondsConverted = Math.floor(seconds / value);
+ returnArray.push(secondsConverted);
+ seconds -= secondsConverted * value;
+ }
+ ;
+
+ return returnArray;
+ },
+
+ /**
+ * @param number An integer
+ * @return Integer padded with a 0 if necessary
+ */
+ padNumber: function(number) {
+ return (number >= 0 && number < 10) ? '0' + number : number;
+ }
+ };
+ return remaining;
+}); \ No newline at end of file