diff --git a/jquery.tipsy/jquery.tipsy-tests.ts b/jquery.tipsy/jquery.tipsy-tests.ts
new file mode 100644
index 000000000..384e34a21
--- /dev/null
+++ b/jquery.tipsy/jquery.tipsy-tests.ts
@@ -0,0 +1,32 @@
+///
+///
+
+// basic
+$('#example-1').tipsy();
+
+// code snippets from http://onehackoranother.com/projects/jquery/tipsy/
+$('#foo').tipsy({gravity: 'n'}); // nw | n | ne | w | e | sw | s | se
+
+$('#foo').tipsy({gravity: $.fn.tipsy.autoNS});
+
+$('#example-fade').tipsy({fade: true});
+
+$('#example-custom-attribute').tipsy({title: 'id'});
+
+$('#example-callback').tipsy({title: function() { return this.getAttribute('original-title').toUpperCase(); } });
+
+$('#example-fallback').tipsy({fallback: "Where's my tooltip yo'?" });
+
+$('#example-html').tipsy({html: true });
+
+$('#example-delay').tipsy({delayIn: 500, delayOut: 1000});
+
+$(function() {
+ $('#focus-example [title]').tipsy({trigger: 'focus', gravity: 'w'});
+});
+
+function onclickExample1() { $("#manual-example a[rel=tipsy]").tipsy("show"); return false; }
+function onclickExample2() { $("#manual-example a[rel=tipsy]").tipsy("hide"); return false; }
+$('#manual-example a[rel=tipsy]').tipsy({trigger: 'manual'});
+
+$('a.live-tipsy').tipsy({live: true});
\ No newline at end of file
diff --git a/jquery.tipsy/jquery.tipsy.d.ts b/jquery.tipsy/jquery.tipsy.d.ts
new file mode 100644
index 000000000..d586eefbd
--- /dev/null
+++ b/jquery.tipsy/jquery.tipsy.d.ts
@@ -0,0 +1,107 @@
+// Type definitions for jQuery.tipsy
+// Project: http://onehackoranother.com/projects/jquery/tipsy/
+// Definitions by: Brian Dukes
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+interface JQuery {
+ /**
+ * initialize tipsy plugin
+ */
+ tipsy: JQueryTipsy.Tipsy;
+}
+
+declare module JQueryTipsy {
+ interface Options {
+ /**
+ * delay before showing tooltip (ms)
+ *
+ * default: 0
+ */
+ delayIn?: number;
+ /**
+ * delay before hiding tooltip (ms)
+ *
+ * default: 0
+ */
+ delayOut?: number;
+ /**
+ * fade tooltips in/out?
+ *
+ * default: false
+ */
+ fade?: boolean;
+ /**
+ * fallback text to use when no tooltip text
+ *
+ * default: ''
+ */
+ fallback?: string;
+ /**
+ * gravity
+ *
+ * default: 'n'
+ */
+ gravity?: any; // string or () => string
+ /**
+ * is tooltip content HTML?
+ *
+ * default: false
+ */
+ html?: boolean;
+ /**
+ * use live event support?
+ *
+ * default: false
+ */
+ live?: boolean;
+ /**
+ * pixel offset of tooltip from element
+ *
+ * default: 0
+ */
+ offset?: number;
+ /**
+ * opacity of tooltip
+ *
+ * default: 0.8
+ */
+ opacity?: number;
+ /**
+ * attribute/callback containing tooltip text
+ *
+ * default: 'title'
+ */
+ title?: any; // string or () => string
+ /**
+ * how tooltip is triggered - hover | focus | manual
+ *
+ * default: 'hover'
+ */
+ trigger?: string;
+ }
+
+ interface Tipsy {
+ /**
+ * initialize tipsy plugin
+ */
+ (options?: Options): JQuery;
+ /**
+ * determine gravity either to North or South automatically based on the element's location in the viewport
+ */
+ autoNS: () => string;
+ /**
+ * determine gravity either to West or East automatically based on the element's location in the viewport
+ */
+ autoWE: () => string;
+ /**
+ * determine gravity either to Southwest or Southeast automatically based on the element's location in the viewport
+ */
+ autoSWSE: () => string;
+ /**
+ * determine gravity either to Northwest or Northeast automatically based on the element's location in the viewport
+ */
+ autoNWNE: () => string;
+ }
+}