diff --git a/jqrangeslider/jqrangeslider-tests.ts b/jqrangeslider/jqrangeslider-tests.ts
new file mode 100644
index 0000000000..37ffeb8eff
--- /dev/null
+++ b/jqrangeslider/jqrangeslider-tests.ts
@@ -0,0 +1,157 @@
+///
+///
+
+// Arrows
+$("#arrowsExample").rangeSlider({ arrows: false });
+$("#arrowsExample").editRangeSlider({ arrows: false });
+$("#arrowsExample").dateRangeSlider({ arrows: false });
+// Bounds
+$("#boundsExample").rangeSlider({ bounds: { min: 10, max: 90 } });
+$("#boundsExample").editRangeSlider({ bounds: { min: 10, max: 90 } });
+$("#boundsExample").dateRangeSlider({
+ bounds: {
+ min: new Date(2012, 0, 1),
+ max: new Date(2012, 11, 31)
+ }
+});
+// Default values
+$("#defaultValuesExample").rangeSlider({ defaultValues: { min: 10, max: 90 } });
+$("#defaultValuesExample").editRangeSlider({ defaultValues: { min: 10, max: 90 } });
+$("#defaultValuesExample").dateRangeSlider({
+ defaultValues: {
+ min: new Date(2012, 0, 1),
+ max: new Date(2012, 11, 31)
+ }
+});
+// Delay out
+$("#delayExample").rangeSlider({
+ valueLabels: "change",
+ delayOut: 4000
+});
+$("#delayExample").editRangeSlider({
+ valueLabels: "change",
+ delayOut: 4000
+});
+$("#delayExample").dateRangeSlider({
+ valueLabels: "change",
+ delayOut: 4000
+});
+// Duration in/out
+$("#durationExample").rangeSlider({
+ valueLabels: "change",
+ durationIn: 1000,
+ durationOut: 1000
+});
+$("#defaultValuesExample").editRangeSlider({
+ valueLabels: "change",
+ durationIn: 1000,
+ durationOut: 1000
+});
+$("#defaultValuesExample").dateRangeSlider({
+ valueLabels: "change",
+ durationIn: 1000,
+ durationOut: 1000
+});
+// Formatter - JS-way
+$("#formatterExample").rangeSlider({
+ formatter: function (val) {
+ var value = Math.round(val * 5) / 5,
+ decimal = value - Math.round(val);
+ return decimal == 0 ? value.toString() + ".0" : value.toString();
+ }
+});
+$("#formatterExample").editRangeSlider({
+ formatter: function (val) {
+ var value = Math.round(val * 5) / 5,
+ decimal = value - Math.round(val);
+ return decimal == 0 ? value.toString() + ".0" : value.toString();
+ }
+});
+$("#formatterExample").dateRangeSlider({
+ formatter: function (val) {
+ var days = val.getDay(),
+ month = val.getMonth() + 1,
+ year = val.getYear();
+ return days + "/" + month + "/" + year;
+ }
+});
+// Formatter - TS-way
+$("#formatterExample").rangeSlider({
+ formatter: (val: number) => {
+ var value = Math.round(val * 5) / 5,
+ decimal = value - Math.round(val);
+ return decimal == 0 ? value.toString() + ".0" : value.toString();
+ }
+});
+$("#formatterExample").editRangeSlider({
+ formatter: (val: number) => {
+ var value = Math.round(val * 5) / 5,
+ decimal = value - Math.round(val);
+ return decimal == 0 ? value.toString() + ".0" : value.toString();
+ }
+});
+$("#formatterExample").dateRangeSlider({
+ formatter: (val: Date) => {
+ var days = val.getDay(),
+ month = val.getMonth() + 1,
+ year = val.getYear();
+ return days + "/" + month + "/" + year;
+ }
+});
+// Range
+$("#rangeExample").rangeSlider({range: {min: 10, max: 40}});
+$("#rangeExample").editRangeSlider({range: {min: 10, max: 40}});
+$("#rangeExample").dateRangeSlider({
+ range: {
+ min: { days: 2 },
+ max: { days: 7 }
+ }
+});
+$("#rangeExample").rangeSlider({range: {min: 10}});
+$("#rangeExample").rangeSlider({range: {min: 10, max: false}});
+$("#rangeExample").rangeSlider({range: false});
+$("#rangeExample").rangeSlider({range: {min: false, max: false}});
+$("#rangeExample").rangeSlider({range: {min: false}});
+// Step
+$("#stepExample").rangeSlider({step: 10});
+$("#rangeExample").dateRangeSlider({
+ step: {
+ days: 2
+ }
+});
+// Value labels
+$("#valueLabelsExample").rangeSlider({valueLabels: "change"});
+$("#valueLabelsExample").dateRangeSlider({valueLabels: "change"});
+// Wheel mode
+$("#wheelModeExample").rangeSlider({wheelMode: "zoom"});
+$("#wheelModeExample").rangeSlider({wheelMode: null});
+// Wheel speed
+$("#wheelSpeedExample").rangeSlider({wheelMode: "scroll", wheelSpeed: 30});
+$("#wheelSpeedExample").dateRangeSlider({wheelMode: "scroll", wheelSpeed: 30});
+
+// Get bounds
+var basicSliderBounds: JQRangeSliderNumericRange = $("#slider").rangeSlider("bounds");
+console.log(basicSliderBounds.min + " " + basicSliderBounds.max);
+var editSliderBounds: JQRangeSliderNumericRange = $("#editSlider").editRangeSlider("bounds");
+console.log(editSliderBounds.min + " " + editSliderBounds.max);
+var dateSliderBounds: JQRangeSliderDateRange = $("#dateSlider").dateRangeSlider("bounds");
+console.log(dateSliderBounds.min.toString() + " " + dateSliderBounds.max.toString());
+
+// Set bounds
+$("#slider").rangeSlider("bounds", 10, 20);
+$("#editSlider").editRangeSlider("bounds", 20, 100);
+$("#dateSlider").dateRangeSlider("bounds", new Date(2012, 0, 1), new Date(2012, 0, 31));
+
+// Get min/max
+var basicSliderMin: number = $("#slider").rangeSlider("min");
+console.log(basicSliderMin);
+var editSliderMin: number = $("#editSlider").editRangeSlider("min");
+console.log(editSliderMin);
+var dateSliderMax: Date = $("#dateSlider").dateRangeSlider("max");
+console.log(dateSliderMax.toString());
+
+// Set min/max
+$("#slider").rangeSlider("min", 10);
+$("#editSlider").editRangeSlider("min", 20);
+$("#dateSlider").dateRangeSlider("max", new Date(2012, 1, 1));
+
diff --git a/jqrangeslider/jqrangeslider.d.ts b/jqrangeslider/jqrangeslider.d.ts
new file mode 100644
index 0000000000..21a00023f0
--- /dev/null
+++ b/jqrangeslider/jqrangeslider.d.ts
@@ -0,0 +1,74 @@
+// Type definitions for jQRangeSlider 4.2.8
+// Project: http://ghusse.github.com/jQRangeSlider
+// Definitions by: Dániel Tar https://github.com/qcz
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+///
+
+interface JQRangeSliderNumericRange {
+ min?: number;
+ max?: number;
+}
+
+interface JQRangeSliderDateRange {
+ min?: Date;
+ max?: Date;
+}
+
+interface JQRangeSliderRangeLength {
+ min?: any;
+ max?: any;
+}
+
+interface JQRangeSliderDateSteps {
+ years?: number;
+ months?: number;
+ weeks?: number;
+ days?: number;
+ hours?: number;
+ minutes?: number;
+ seconds?: number;
+}
+
+interface JQRangeSliderOptions {
+ wheelMode?: string;
+ wheelSpeed?: number;
+ arrows?: bool;
+ valueLabels?: string;
+ durationIn?: number;
+ durationOut?: number;
+ delayOut?: number;
+ range?: JQRangeSliderRangeLength;
+}
+
+interface JQNumericRangeSliderOptions extends JQRangeSliderOptions {
+ bounds?: JQRangeSliderNumericRange;
+ defaultValues?: JQRangeSliderNumericRange;
+ formatter?: (integer) => string;
+ step?: number;
+}
+
+interface JQDateRangeSliderOptions extends JQRangeSliderOptions {
+ bounds?: JQRangeSliderDateRange;
+ defaultValues?: JQRangeSliderDateRange;
+ formatter?: (Date) => string;
+ step?: JQRangeSliderDateSteps;
+}
+
+interface JQuery {
+ rangeSlider(options?: JQNumericRangeSliderOptions): JQuery;
+ rangeSlider(method: string): any;
+ rangeSlider(method: string, value: number): JQuery;
+ rangeSlider(method: string, min: number, max: number): JQuery;
+
+ editRangeSlider(options?: JQNumericRangeSliderOptions): JQuery;
+ editRangeSlider(method: string): any;
+ editRangeSlider(method: string, value: number): JQuery;
+ editRangeSlider(method: string, min: number, max: number): JQuery;
+
+ dateRangeSlider(options?: JQRangeSliderOptions): JQuery;
+ dateRangeSlider(method: string): any;
+ dateRangeSlider(method: string, value: Date): JQuery;
+ dateRangeSlider(method: string, min: Date, max: Date): JQuery;
+}