diff --git a/videojs/videojs-tests.ts b/videojs/videojs-tests.ts
new file mode 100644
index 0000000000..7995339acb
--- /dev/null
+++ b/videojs/videojs-tests.ts
@@ -0,0 +1,74 @@
+// Tests for Video.js API
+///
+
+_V_("example_video_1").ready(function(){
+
+ var myPlayer:VideoJSPlayer = this;
+
+ // EXAMPLE: Start playing the video.
+ myPlayer.play();
+
+ myPlayer.pause();
+
+ var isPaused: bool = myPlayer.paused();
+ var isPlaying: bool = !myPlayer.paused();
+
+ myPlayer.src("http://www.example.com/path/to/video.mp4");
+
+ myPlayer.src({ type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" });
+
+ myPlayer.src([
+ { type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" },
+ { type: "video/webm", src: "http://www.example.com/path/to/video.webm" },
+ { type: "video/ogg", src: "http://www.example.com/path/to/video.ogv" }
+ ]);
+
+ var whereYouAt: number = myPlayer.currentTime();
+
+ myPlayer.currentTime(120); // 2 minutes into the video
+
+ var howLongIsThis: number = myPlayer.duration();
+
+ var bufferedTimeRange: TimeRanges = myPlayer.buffered();
+
+ // Number of different ranges of time have been buffered. Usually 1.
+ var numberOfRanges: number = bufferedTimeRange.length;
+
+ // Time in seconds when the first range starts. Usually 0.
+ var firstRangeStart: number = bufferedTimeRange.start(0);
+
+ // Time in seconds when the first range ends
+ var firstRangeEnd: number = bufferedTimeRange.end(0);
+
+ // Length in seconds of the first time range
+ var firstRangeLength: number = firstRangeEnd - firstRangeStart;
+
+ var howMuchIsDownloaded: number = myPlayer.bufferedPercent();
+
+ var howLoudIsIt: number = myPlayer.volume();
+
+ myPlayer.volume(0.5); // Set volume to half
+
+ var howWideIsIt: number = myPlayer.width();
+
+ myPlayer.width(640);
+
+ var howTallIsIt: number = myPlayer.height();
+
+ myPlayer.height(480);
+
+ myPlayer.size(640,480);
+
+ myPlayer.requestFullScreen();
+
+ myPlayer.cancelFullScreen();
+
+
+ var myFunc = function(){
+ var myPlayer: VideoJSPlayer = this;
+ // Do something when the event is fired
+ };
+ myPlayer.addEvent("volumechange", myFunc);
+ myPlayer.removeEvent("volumechange", myFunc);
+
+});
\ No newline at end of file
diff --git a/videojs/videojs.d.ts b/videojs/videojs.d.ts
new file mode 100644
index 0000000000..49fb1c09a8
--- /dev/null
+++ b/videojs/videojs.d.ts
@@ -0,0 +1,51 @@
+// Type definitions for Video.js
+// The Video.js API allows you to interact with the video through Javascript, whether the browser is playing the video through HTML5 video, Flash, or any other supported playback technologies.
+// Project: https://github.com/zencoder/video-js
+// Definitions by: Vincent Bortone
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+interface VideoJSOptions {
+ techOrder?: string[];
+ html5?: Object;
+ width?: number;
+ height?: number;
+ defaultVolume?: number;
+ children?: Object;
+}
+
+interface VideoJSSource {
+ type: string;
+ src: string;
+}
+
+interface VideoJSPlayer {
+ play(): VideoJSPlayer;
+ pause(): VideoJSPlayer;
+ paused(): bool;
+ src(newSource: string): VideoJSPlayer;
+ src(newSource: VideoJSSource): VideoJSPlayer;
+ src(newSource: VideoJSSource[]): VideoJSPlayer;
+ currentTime(seconds: number): VideoJSPlayer;
+ currentTime(): number;
+ duration(): number;
+ buffered(): TimeRanges;
+ bufferedPercent(): number;
+ volume(percentAsDecimal: number): TimeRanges;
+ volume(): number;
+ width(): number;
+ width(pixels: number): VideoJSPlayer;
+ height(): number;
+ height(pixels: number): VideoJSPlayer;
+ size(width: number, height: number): VideoJSPlayer;
+ requestFullScreen(): VideoJSPlayer;
+ cancelFullScreen(): VideoJSPlayer;
+ ready(callback: () => void ): void;
+ addEvent(eventName: string, callback: () => void ): void;
+ removeEvent(eventName: string, callback: () => void ): void;
+}
+
+interface VideoJSStatic {
+ (id: any, options?: VideoJSOptions, ready?: () => void): VideoJSPlayer;
+}
+
+declare var _V_:VideoJSStatic;
\ No newline at end of file