third-party: added timepicker addon needed for scheduler
[myslice.git] / third-party / timepicker-addon-1.2 / jquery-ui-sliderAccess.js
diff --git a/third-party/timepicker-addon-1.2/jquery-ui-sliderAccess.js b/third-party/timepicker-addon-1.2/jquery-ui-sliderAccess.js
new file mode 100644 (file)
index 0000000..a54cf4a
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * jQuery UI Slider Access
+ * By: Trent Richardson [http://trentrichardson.com]
+ * Version 0.3
+ * Last Modified: 10/20/2012
+ * 
+ * Copyright 2011 Trent Richardson
+ * Dual licensed under the MIT and GPL licenses.
+ * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
+ * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
+ * 
+ */
+ (function($){
+
+       $.fn.extend({
+               sliderAccess: function(options){
+                       options = options || {};
+                       options.touchonly = options.touchonly !== undefined? options.touchonly : true; // by default only show it if touch device
+
+                       if(options.touchonly === true && !("ontouchend" in document))
+                               return $(this);
+                               
+                       return $(this).each(function(i,obj){
+                                               var $t = $(this),
+                                                       o = $.extend({},{ 
+                                                                                       where: 'after',
+                                                                                       step: $t.slider('option','step'), 
+                                                                                       upIcon: 'ui-icon-plus', 
+                                                                                       downIcon: 'ui-icon-minus',
+                                                                                       text: false,
+                                                                                       upText: '+',
+                                                                                       downText: '-',
+                                                                                       buttonset: true,
+                                                                                       buttonsetTag: 'span',
+                                                                                       isRTL: false
+                                                                               }, options),
+                                                       $buttons = $('<'+ o.buttonsetTag +' class="ui-slider-access">'+
+                                                                                       '<button data-icon="'+ o.downIcon +'" data-step="'+ (o.isRTL? o.step : o.step*-1) +'">'+ o.downText +'</button>'+
+                                                                                       '<button data-icon="'+ o.upIcon +'" data-step="'+ (o.isRTL? o.step*-1 : o.step) +'">'+ o.upText +'</button>'+
+                                                                               '</'+ o.buttonsetTag +'>');
+
+                                               $buttons.children('button').each(function(j, jobj){
+                                                       var $jt = $(this);
+                                                       $jt.button({ 
+                                                                                       text: o.text, 
+                                                                                       icons: { primary: $jt.data('icon') }
+                                                                               })
+                                                               .click(function(e){
+                                                                                       var step = $jt.data('step'),
+                                                                                               curr = $t.slider('value'),
+                                                                                               newval = curr += step*1,
+                                                                                               minval = $t.slider('option','min'),
+                                                                                               maxval = $t.slider('option','max'),
+                                                                                               slidee = $t.slider("option", "slide") || function(){},
+                                                                                               stope = $t.slider("option", "stop") || function(){};
+
+                                                                                       e.preventDefault();
+                                                                                       
+                                                                                       if(newval < minval || newval > maxval)
+                                                                                               return;
+                                                                                       
+                                                                                       $t.slider('value', newval);
+
+                                                                                       slidee.call($t, null, { value: newval });
+                                                                                       stope.call($t, null, { value: newval });
+                                                                               });
+                                               });
+                                               
+                                               // before or after                                      
+                                               $t[o.where]($buttons);
+
+                                               if(o.buttonset){
+                                                       $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset();
+                                                       $buttons.eq(0).addClass('ui-corner-left');
+                                                       $buttons.eq(1).addClass('ui-corner-right');
+                                               }
+
+                                               // adjust the width so we don't break the original layout
+                                               var bOuterWidth = $buttons.css({
+                                                                       marginLeft: ((o.where == 'after' && !o.isRTL) || (o.where == 'before' && o.isRTL)? 10:0), 
+                                                                       marginRight: ((o.where == 'before' && !o.isRTL) || (o.where == 'after' && o.isRTL)? 10:0)
+                                                               }).outerWidth(true) + 5;
+                                               var tOuterWidth = $t.outerWidth(true);
+                                               $t.css('display','inline-block').width(tOuterWidth-bOuterWidth);
+                                       });             
+               }
+       });
+
+})(jQuery);
\ No newline at end of file