diff --git a/README.md b/README.md
index c636fb8fd..0db7e815a 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@ Complete
* [async](https://github.com/caolan/async) (by [Boris Yankov](https://github.com/borisyankov))
* [Backbone.js](http://backbonejs.org/) (by [Boris Yankov](https://github.com/borisyankov))
* [Bootstrap](http://twitter.github.com/bootstrap/) (by [Boris Yankov](https://github.com/borisyankov))
+* [bootstrap.datepicker](https://github.com/eternicode/bootstrap-datepicker) (by [Boris Yankov](https://github.com/borisyankov))
* [Breeze](http://www.breezejs.com/) (by [Boris Yankov](https://github.com/borisyankov))
* [CodeMirror](http://codemirror.net) (by [François de Campredon](https://github.com/fdecampredon))
* [Chosen](http://harvesthq.github.com/chosen/) (by [Boris Yankov](https://github.com/borisyankov))
diff --git a/bootstrap.datepicker/bootstrap.datepicker-tests.ts b/bootstrap.datepicker/bootstrap.datepicker-tests.ts
new file mode 100644
index 000000000..9ba7fe3fd
--- /dev/null
+++ b/bootstrap.datepicker/bootstrap.datepicker-tests.ts
@@ -0,0 +1,79 @@
+///
+///
+
+function tests_simple() {
+ $('#datepicker').datepicker();
+ $('#datepicker').datepicker({
+ format: 'mm-dd-yyyy'
+ });
+ $('#datepicker').datepicker('setStartDate');
+ $('#datepicker').datepicker('setStartDate', null);
+ $('#datepicker').datepicker('setEndDate', '2012-12-31');
+ $('#date-end')
+ .datepicker()
+ .on('changeDate', function (ev) { });
+
+ var startDate = new Date(2012, 1, 20);
+ var endDate = new Date(2012, 1, 25);
+ $('#date-start')
+ .datepicker()
+ .on('changeDate', function (ev) {
+ if (ev.date.valueOf() > endDate.valueOf()) {
+ $('#alert').show().find('strong').text('The start date must be before the end date.');
+ } else {
+ $('#alert').hide();
+ startDate = new Date(ev.date);
+ $('#date-start-display').text($('#date-start').data('date'));
+ }
+ $('#date-start').datepicker('hide');
+ });
+ $('#date-end')
+ .datepicker()
+ .on('changeDate', function (ev) {
+ if (ev.date.valueOf() < startDate.valueOf()) {
+ $('#alert').show().find('strong').text('The end date must be after the start date.');
+ } else {
+ $('#alert').hide();
+ endDate = new Date(ev.date);
+ $('#date-end-display').text($('#date-end').data('date'));
+ }
+ $('#date-end').datepicker('hide');
+ });
+}
+
+$(function () {
+ $('#dp1').datepicker({
+ format: 'mm-dd-yyyy'
+ });
+ $('#dp2').datepicker();
+ $('#dp3').datepicker();
+ $('#dp3').datepicker();
+ $('#dpYears').datepicker();
+ $('#dpMonths').datepicker();
+
+
+ var startDate = new Date(2012, 1, 20);
+ var endDate = new Date(2012, 1, 25);
+ $('#dp4').datepicker()
+ .on('changeDate', function (ev) {
+ if (ev.date.valueOf() > endDate.valueOf()) {
+ $('#alert').show().find('strong').text('The start date can not be greater then the end date');
+ } else {
+ $('#alert').hide();
+ startDate = new Date(ev.date);
+ $('#startDate').text($('#dp4').data('date'));
+ }
+ $('#dp4').datepicker('hide');
+ });
+ $('#dp5').datepicker()
+ .on('changeDate', function (ev) {
+ if (ev.date.valueOf() < startDate.valueOf()) {
+ $('#alert').show().find('strong').text('The end date can not be less then the start date');
+ } else {
+ $('#alert').hide();
+ endDate = new Date(ev.date);
+ $('#endDate').text($('#dp5').data('date'));
+ }
+ $('#dp5').datepicker('hide');
+ });
+});
\ No newline at end of file
diff --git a/bootstrap.datepicker/bootstrap.datepicker.d.ts b/bootstrap.datepicker/bootstrap.datepicker.d.ts
new file mode 100644
index 000000000..118526f91
--- /dev/null
+++ b/bootstrap.datepicker/bootstrap.datepicker.d.ts
@@ -0,0 +1,27 @@
+// Type definitions for bootstrap.datepicker
+// Project: https://github.com/eternicode/bootstrap-datepicker
+// Definitions by: Boris Yankov
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+
+///
+
+interface DatepickerOptions {
+ format?: string;
+ weekStart?: number;
+ startDate?: Date;
+ endDate?: Date;
+ autoclose?: bool;
+ startView?: number;
+ todayBtn?: bool;
+ todayHighlight?: bool;
+ keyboardNavigation?: bool;
+ language?: string;
+}
+
+interface JQuery {
+ datepicker(): JQuery;
+ datepicker(methodName: string): JQuery;
+ datepicker(methodName: string, params: any): JQuery;
+ datepicker(options: DatepickerOptions): JQuery;
+}
\ No newline at end of file