diff --git a/gldatepicker/gldatepicker-tests.ts b/gldatepicker/gldatepicker-tests.ts
new file mode 100644
index 000000000..885ec53ea
--- /dev/null
+++ b/gldatepicker/gldatepicker-tests.ts
@@ -0,0 +1,89 @@
+///
+///
+
+$('input').glDatePicker();
+$('#example2').glDatePicker(
+{
+ showAlways: true,
+ allowMonthSelect: false,
+ allowYearSelect: false,
+ prevArrow: '',
+ nextArrow: '',
+ selectedDate: new Date(2013, 8, 5),
+ selectableDateRange: [
+ {
+ from: new Date(2013, 8, 1),
+ to: new Date(2013, 8, 10)
+ },
+ {
+ from: new Date(2013, 8, 19),
+ to: new Date(2013, 8, 22)
+ },
+ ],
+ selectableDates: [
+ { date: new Date(2013, 8, 24) },
+ { date: new Date(2013, 8, 30) }
+ ]
+});
+
+$('#example3').glDatePicker(
+{
+ showAlways: true,
+ cssName: 'darkneon',
+ selectedDate: new Date(2013, 0, 5),
+ specialDates: [
+ {
+ date: new Date(2013, 0, 8),
+ data: { message: 'Meeting every day 8 of the month' },
+ repeatMonth: true
+ },
+ {
+ date: new Date(0, 0, 1),
+ data: { message: 'Happy New Year!' },
+ repeatYear: true
+ },
+ ],
+ onClick: function (target, cell, date, data) {
+ target.val(date.getFullYear() + ' - ' +
+ date.getMonth() + ' - ' +
+ date.getDate());
+
+ if (data != null) {
+ alert(data.message + '\n' + date);
+ }
+ }
+});
+
+$('#example4').glDatePicker(
+{
+ showAlways: true,
+ selectedDate: new Date(2013, 8, 5),
+ dowOffset: 3,
+ selectableYears: [2012, 2013, 2014],
+ selectableMonths: [8, 11],
+ selectableDOW: [1, 4, 6]
+});
+
+// Doing it in a single pass
+var myDatePicker = $('#example1').glDatePicker(
+{
+ showAlways: true,
+ selectableDOW: [0, 2, 3]
+}).glDatePicker(true);
+
+// Or you can do it with multiple calls
+$('example1').glDatePicker(
+{
+ showAlways: true,
+ selectableDOW: [0, 2, 3]
+});
+
+// This example updates some options (calling render will re-generate the calendar)
+$.extend(myDatePicker.options,
+{
+ cssName: 'darkneon',
+ allowMonthSelect: false,
+ allowYearSelect: false
+});
+myDatePicker.render();
+myDatePicker.show();
diff --git a/gldatepicker/gldatepicker.d.ts b/gldatepicker/gldatepicker.d.ts
new file mode 100644
index 000000000..232d30c78
--- /dev/null
+++ b/gldatepicker/gldatepicker.d.ts
@@ -0,0 +1,69 @@
+// Type definitions for glDatePicker 2.0
+// Project: http://glad.github.com/glDatePicker/
+// Definitions by: Dániel Tar https://github.com/qcz
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+interface GlDatePickerOffset {
+ x: number;
+ y: number;
+}
+
+interface GlDatePickerDate {
+ date: Date;
+ repeatMonth?: bool;
+ repeatYear?: bool;
+}
+
+interface GlDatePickerDateRange {
+ from: Date;
+ to?: Date;
+ repeatYear?: bool;
+}
+
+interface GlDatePickerSpecialDate extends GlDatePickerDate {
+ data?: any;
+ cssClass?: string;
+}
+
+interface GlDatePickerOptions {
+ cssName?: string;
+ zIndex?: number;
+ borderSize?: number;
+ calendarOffset?: GlDatePickerOffset;
+ showAlways?: bool;
+ hideOnClick?: bool;
+ allowMonthSelect?: bool;
+ allowYearSelect?: bool;
+ todayDate?: Date;
+ selectedDate?: Date;
+ prevArrow?: string;
+ nextArrow?: string;
+ selectableDates?: GlDatePickerDate[];
+ selectableDateRange?: GlDatePickerDateRange[];
+ specialDates?: GlDatePickerSpecialDate[];
+ selectableMonths?: number[];
+ selectableYears?: number[];
+ selectableDOW?: number[];
+ monthNames?: string[];
+ dowNames?: string[];
+ dowOffset?: number;
+ onClick?: (inputElement: JQuery, cell: JQuery, date: Date, data: any) => void;
+ onHover?: (inputElement: JQuery, cell: JQuery, date: Date, data: any) => void;
+ onShow?: (calendar: JQuery) => void;
+ onHide?: (calendar: JQuery) => void;
+}
+
+interface GlDatePicker {
+ options: GlDatePickerOptions;
+
+ show(): void;
+ hide(): void;
+ render(renderCallback?: () => void): void;
+}
+
+interface JQuery {
+ glDatePicker(options?: GlDatePickerOptions): JQuery;
+ glDatePicker(ret: bool): GlDatePicker;
+}
\ No newline at end of file
diff --git a/jqrangeslider/jqrangeslider-tests.ts b/jqrangeslider/jqrangeslider-tests.ts
new file mode 100644
index 000000000..37ffeb8ef
--- /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 000000000..988b97fb6
--- /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; // function of the wheel, "zoom", "scroll" or null
+ wheelSpeed?: number; // speed of the wheel scrolling
+ arrows?: bool; // hide the arrows or not
+ valueLabels?: string; // when to show value labels: "show" (always), "hide" (never) and "change" (only if slider changed)
+ durationIn?: number; // fade in length when displaying value labels (only when valueLabels = "change")
+ durationOut?: number; // fade out length when displaying value labels (only when valueLabels = "change")
+ delayOut?: number; // duration labels are shown after the user changed its values (only when valueLabels = "change")
+ range?: JQRangeSliderRangeLength; // lets you specify minimum and/or maximum range length
+}
+
+interface JQNumericRangeSliderOptions extends JQRangeSliderOptions {
+ bounds?: JQRangeSliderNumericRange; // min and max values of the slider
+ defaultValues?: JQRangeSliderNumericRange; // values selected by default on construction
+ formatter?: (integer) => string; // customize displayed label text
+ step?: number; // allows to customize values rounding, and graphically render this rounding
+}
+
+interface JQDateRangeSliderOptions extends JQRangeSliderOptions {
+ bounds?: JQRangeSliderDateRange; // min and max values of the slider
+ defaultValues?: JQRangeSliderDateRange; // values selected by default on construction
+ formatter?: (Date) => string; // customize displayed label text
+ step?: JQRangeSliderDateSteps; // allows to customize values rounding, and graphically render this rounding
+}
+
+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;
+}
diff --git a/mousetrap/mousetrap-tests.ts b/mousetrap/mousetrap-tests.ts
new file mode 100644
index 000000000..3eac1eef1
--- /dev/null
+++ b/mousetrap/mousetrap-tests.ts
@@ -0,0 +1,43 @@
+///
+///
+
+Mousetrap.bind('4', function() { console.log('4'); });
+Mousetrap.bind("?", function() { console.log('show shortcuts!'); });
+Mousetrap.bind('esc', function() { console.log('escape'); }, 'keyup');
+
+// combinations
+Mousetrap.bind('command+shift+K', function() { console.log('command shift k'); });
+
+// map multiple combinations to the same callback
+Mousetrap.bind(['command+k', 'ctrl+k'], function() {
+ console.log('command k or control k');
+
+ // return false to prevent default browser behavior
+ // and stop event from bubbling
+ return false;
+});
+
+// gmail style sequences
+Mousetrap.bind('g i', function() { console.log('go to inbox'); });
+Mousetrap.bind('* a', function() { console.log('select all'); });
+
+// konami code!
+Mousetrap.bind('up up down down left right left right b a enter', function() {
+ console.log('konami code');
+});
+
+Mousetrap.bind(['ctrl+s', 'meta+s'], (e, combo) => {
+ if (e.preventDefault) {
+ e.preventDefault();
+ } else {
+ // internet explorer
+ e.returnValue = false;
+ }
+});
+
+Mousetrap.unbind('?');
+
+Mousetrap.trigger('esc');
+Mousetrap.trigger('esc', 'keyup');
+
+Mousetrap.reset();
diff --git a/mousetrap/mousetrap.d.ts b/mousetrap/mousetrap.d.ts
new file mode 100644
index 000000000..a81854c4f
--- /dev/null
+++ b/mousetrap/mousetrap.d.ts
@@ -0,0 +1,21 @@
+// Type definitions for Mousetrap 1.2.2
+// Project: http://craig.is/killing/mice
+// Definitions by: Dániel Tar https://github.com/qcz
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+interface ExtendedKeyboardEvent extends KeyboardEvent {
+ returnValue: bool; // IE returnValue
+}
+
+interface MousetrapStatic {
+ stopCallback: (e: ExtendedKeyboardEvent, element: Element, combo: string) => bool;
+
+ bind(keys: string, callback: (e: ExtendedKeyboardEvent, combo: string) => any, action?: string): void;
+ bind(keyArray: string[], callback: (e: ExtendedKeyboardEvent, combo: string) => any, action?: string): void;
+ unbind(keys: string, action?: string): void;
+ unbind(keyArray: string[], action?: string): void;
+ trigger(keys: string, action?: string): void;
+ reset(): void;
+}
+
+var Mousetrap: MousetrapStatic;