diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 1832990..87ca7ce 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -4,6 +4,7 @@ X-editable changelog
 
 Version 1.3.1 wip
 ---------------------------- 
+[enh] update bootstrap-datepicker to upstream (vitalets)
 [enh] 'display' method: added param 'response' allowing to show text directly from server (vitalets)
 [enh] new util method `$.fn.editableutils.itemsByValue` to easily get selected items for sourced-inputs (vitalets)
 [enh] convert newlines to <br> in error message for more pretty display (vitalets)
diff --git a/src/inputs/date/bootstrap-datepicker/css/datepicker.css b/src/inputs/date/bootstrap-datepicker/css/datepicker.css
index abf3886..f87f973 100644
--- a/src/inputs/date/bootstrap-datepicker/css/datepicker.css
+++ b/src/inputs/date/bootstrap-datepicker/css/datepicker.css
@@ -13,22 +13,26 @@
   -webkit-border-radius: 4px;
   -moz-border-radius: 4px;
   border-radius: 4px;
+  direction: ltr;
   /*.dow {
 		border-top: 1px solid #ddd !important;
 	}*/
-}
 
+}
 .datepicker-inline {
-  width: 220px; 
-/*  height: 220px;  */
+  width: 220px;
 }
-
-.datepicker-float {
+.datepicker.datepicker-rtl {
+  direction: rtl;
+}
+.datepicker.datepicker-rtl table tr td span {
+  float: right;
+}
+.datepicker-dropdown {
   top: 0;
-  left: 0;    
+  left: 0;
 }
-
-.datepicker-float:before {
+.datepicker-dropdown:before {
   content: '';
   display: inline-block;
   border-left: 7px solid transparent;
@@ -39,7 +43,7 @@
   top: -7px;
   left: 6px;
 }
-.datepicker-float:after {
+.datepicker-dropdown:after {
   content: '';
   display: inline-block;
   border-left: 6px solid transparent;
@@ -72,29 +76,31 @@
   -webkit-border-radius: 4px;
   -moz-border-radius: 4px;
   border-radius: 4px;
-  /* vitalets: required to disable css inheritance when display inline inside table */
-  border: none !important; 
-  background-color: transparent !important; 
+  border: none;
 }
-.datepicker td.day:hover {
-  background: #eeeeee !important; /* disable inheritance for inline */
+.table-striped .datepicker table tr td,
+.table-striped .datepicker table tr th {
+  background-color: transparent;
+}
+.datepicker table tr td.day:hover {
+  background: #eeeeee;
   cursor: pointer;
 }
-.datepicker td.old,
-.datepicker td.new {
+.datepicker table tr td.old,
+.datepicker table tr td.new {
   color: #999999;
 }
-.datepicker td.disabled,
-.datepicker td.disabled:hover {
+.datepicker table tr td.disabled,
+.datepicker table tr td.disabled:hover {
   background: none;
   color: #999999;
   cursor: default;
 }
-.datepicker td.today,
-.datepicker td.today:hover,
-.datepicker td.today.disabled,
-.datepicker td.today.disabled:hover {
-  background-color: #fde19a !important;  /* disable inheritance for inline */
+.datepicker table tr td.today,
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today.disabled:hover {
+  background-color: #fde19a;
   background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
   background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
   background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
@@ -105,116 +111,44 @@
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
   border-color: #fdf59a #fdf59a #fbed50;
   border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
 }
-.datepicker td.today:hover,
-.datepicker td.today:hover:hover,
-.datepicker td.today.disabled:hover,
-.datepicker td.today.disabled:hover:hover,
-.datepicker td.today:active,
-.datepicker td.today:hover:active,
-.datepicker td.today.disabled:active,
-.datepicker td.today.disabled:hover:active,
-.datepicker td.today.active,
-.datepicker td.today:hover.active,
-.datepicker td.today.disabled.active,
-.datepicker td.today.disabled:hover.active,
-.datepicker td.today.disabled,
-.datepicker td.today:hover.disabled,
-.datepicker td.today.disabled.disabled,
-.datepicker td.today.disabled:hover.disabled,
-.datepicker td.today[disabled],
-.datepicker td.today:hover[disabled],
-.datepicker td.today.disabled[disabled],
-.datepicker td.today.disabled:hover[disabled] {
-  background-color: #fdf59a !important;  /* disable inheritance for inline */
+.datepicker table tr td.today:hover,
+.datepicker table tr td.today:hover:hover,
+.datepicker table tr td.today.disabled:hover,
+.datepicker table tr td.today.disabled:hover:hover,
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active,
+.datepicker table tr td.today.disabled,
+.datepicker table tr td.today:hover.disabled,
+.datepicker table tr td.today.disabled.disabled,
+.datepicker table tr td.today.disabled:hover.disabled,
+.datepicker table tr td.today[disabled],
+.datepicker table tr td.today:hover[disabled],
+.datepicker table tr td.today.disabled[disabled],
+.datepicker table tr td.today.disabled:hover[disabled] {
+  background-color: #fdf59a;
 }
-.datepicker td.today:active,
-.datepicker td.today:hover:active,
-.datepicker td.today.disabled:active,
-.datepicker td.today.disabled:hover:active,
-.datepicker td.today.active,
-.datepicker td.today:hover.active,
-.datepicker td.today.disabled.active,
-.datepicker td.today.disabled:hover.active {
+.datepicker table tr td.today:active,
+.datepicker table tr td.today:hover:active,
+.datepicker table tr td.today.disabled:active,
+.datepicker table tr td.today.disabled:hover:active,
+.datepicker table tr td.today.active,
+.datepicker table tr td.today:hover.active,
+.datepicker table tr td.today.disabled.active,
+.datepicker table tr td.today.disabled:hover.active {
   background-color: #fbf069 \9;
 }
-.datepicker td.active,
-.datepicker td.active:hover,
-.datepicker td.active.disabled,
-.datepicker td.active.disabled:hover {
-  background-color: #006dcc !important;  /* disable inheritance for inline */
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker td.active:hover,
-.datepicker td.active:hover:hover,
-.datepicker td.active.disabled:hover,
-.datepicker td.active.disabled:hover:hover,
-.datepicker td.active:active,
-.datepicker td.active:hover:active,
-.datepicker td.active.disabled:active,
-.datepicker td.active.disabled:hover:active,
-.datepicker td.active.active,
-.datepicker td.active:hover.active,
-.datepicker td.active.disabled.active,
-.datepicker td.active.disabled:hover.active,
-.datepicker td.active.disabled,
-.datepicker td.active:hover.disabled,
-.datepicker td.active.disabled.disabled,
-.datepicker td.active.disabled:hover.disabled,
-.datepicker td.active[disabled],
-.datepicker td.active:hover[disabled],
-.datepicker td.active.disabled[disabled],
-.datepicker td.active.disabled:hover[disabled] {
-  background-color: #0044cc;
-}
-.datepicker td.active:active,
-.datepicker td.active:hover:active,
-.datepicker td.active.disabled:active,
-.datepicker td.active.disabled:hover:active,
-.datepicker td.active.active,
-.datepicker td.active:hover.active,
-.datepicker td.active.disabled.active,
-.datepicker td.active.disabled:hover.active {
-  background-color: #003399 \9;
-}
-.datepicker td span {
-  display: block;
-  width: 23%;
-  height: 54px;
-  line-height: 54px;
-  float: left;
-  margin: 1%;
-  cursor: pointer;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.datepicker td span:hover {
-  background: #eeeeee;
-}
-.datepicker td span.disabled,
-.datepicker td span.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
-}
-.datepicker td span.active,
-.datepicker td span.active:hover,
-.datepicker td span.active.disabled,
-.datepicker td span.active.disabled:hover {
+.datepicker table tr td.active,
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active.disabled:hover {
   background-color: #006dcc;
   background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
   background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
@@ -226,43 +160,115 @@
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
   border-color: #0044cc #0044cc #002a80;
   border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
   color: #fff;
   text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 }
-.datepicker td span.active:hover,
-.datepicker td span.active:hover:hover,
-.datepicker td span.active.disabled:hover,
-.datepicker td span.active.disabled:hover:hover,
-.datepicker td span.active:active,
-.datepicker td span.active:hover:active,
-.datepicker td span.active.disabled:active,
-.datepicker td span.active.disabled:hover:active,
-.datepicker td span.active.active,
-.datepicker td span.active:hover.active,
-.datepicker td span.active.disabled.active,
-.datepicker td span.active.disabled:hover.active,
-.datepicker td span.active.disabled,
-.datepicker td span.active:hover.disabled,
-.datepicker td span.active.disabled.disabled,
-.datepicker td span.active.disabled:hover.disabled,
-.datepicker td span.active[disabled],
-.datepicker td span.active:hover[disabled],
-.datepicker td span.active.disabled[disabled],
-.datepicker td span.active.disabled:hover[disabled] {
+.datepicker table tr td.active:hover,
+.datepicker table tr td.active:hover:hover,
+.datepicker table tr td.active.disabled:hover,
+.datepicker table tr td.active.disabled:hover:hover,
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active,
+.datepicker table tr td.active.disabled,
+.datepicker table tr td.active:hover.disabled,
+.datepicker table tr td.active.disabled.disabled,
+.datepicker table tr td.active.disabled:hover.disabled,
+.datepicker table tr td.active[disabled],
+.datepicker table tr td.active:hover[disabled],
+.datepicker table tr td.active.disabled[disabled],
+.datepicker table tr td.active.disabled:hover[disabled] {
   background-color: #0044cc;
 }
-.datepicker td span.active:active,
-.datepicker td span.active:hover:active,
-.datepicker td span.active.disabled:active,
-.datepicker td span.active.disabled:hover:active,
-.datepicker td span.active.active,
-.datepicker td span.active:hover.active,
-.datepicker td span.active.disabled.active,
-.datepicker td span.active.disabled:hover.active {
+.datepicker table tr td.active:active,
+.datepicker table tr td.active:hover:active,
+.datepicker table tr td.active.disabled:active,
+.datepicker table tr td.active.disabled:hover:active,
+.datepicker table tr td.active.active,
+.datepicker table tr td.active:hover.active,
+.datepicker table tr td.active.disabled.active,
+.datepicker table tr td.active.disabled:hover.active {
   background-color: #003399 \9;
 }
-.datepicker td span.old {
+.datepicker table tr td span {
+  display: block;
+  width: 23%;
+  height: 54px;
+  line-height: 54px;
+  float: left;
+  margin: 1%;
+  cursor: pointer;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.datepicker table tr td span:hover {
+  background: #eeeeee;
+}
+.datepicker table tr td span.disabled,
+.datepicker table tr td span.disabled:hover {
+  background: none;
+  color: #999999;
+  cursor: default;
+}
+.datepicker table tr td span.active,
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active.disabled:hover {
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(top, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+  color: #fff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.datepicker table tr td span.active:hover,
+.datepicker table tr td span.active:hover:hover,
+.datepicker table tr td span.active.disabled:hover,
+.datepicker table tr td span.active.disabled:hover:hover,
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active,
+.datepicker table tr td span.active.disabled,
+.datepicker table tr td span.active:hover.disabled,
+.datepicker table tr td span.active.disabled.disabled,
+.datepicker table tr td span.active.disabled:hover.disabled,
+.datepicker table tr td span.active[disabled],
+.datepicker table tr td span.active:hover[disabled],
+.datepicker table tr td span.active.disabled[disabled],
+.datepicker table tr td span.active.disabled:hover[disabled] {
+  background-color: #0044cc;
+}
+.datepicker table tr td span.active:active,
+.datepicker table tr td span.active:hover:active,
+.datepicker table tr td span.active.disabled:active,
+.datepicker table tr td span.active.disabled:hover:active,
+.datepicker table tr td span.active.active,
+.datepicker table tr td span.active:hover.active,
+.datepicker table tr td span.active.disabled.active,
+.datepicker table tr td span.active.disabled:hover.active {
+  background-color: #003399 \9;
+}
+.datepicker table tr td span.old {
   color: #999999;
 }
 .datepicker th.switch {
diff --git a/src/inputs/date/bootstrap-datepicker/js/bootstrap-datepicker.js b/src/inputs/date/bootstrap-datepicker/js/bootstrap-datepicker.js
index acfb6b9..efe7884 100644
--- a/src/inputs/date/bootstrap-datepicker/js/bootstrap-datepicker.js
+++ b/src/inputs/date/bootstrap-datepicker/js/bootstrap-datepicker.js
@@ -36,51 +36,45 @@
 		this.element = $(element);
 		this.language = options.language||this.element.data('date-language')||"en";
 		this.language = this.language in dates ? this.language : "en";
+		this.isRTL = dates[this.language].rtl||false;
 		this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');
-                this.isInline = false;
+		this.isInline = false;
 		this.isInput = this.element.is('input');
 		this.component = this.element.is('.date') ? this.element.find('.add-on') : false;
 		this.hasInput = this.component && this.element.find('input').length;
 		if(this.component && this.component.length === 0)
 			this.component = false;
 
-       if (this.isInput) {   //single input
-            this.element.on({
-                focus: $.proxy(this.show, this),
-                keyup: $.proxy(this.update, this),
-                keydown: $.proxy(this.keydown, this)
-            });
-        } else if(this.component && this.hasInput) {  //component: input + button
-                // For components that are not readonly, allow keyboard nav
-                this.element.find('input').on({
-                    focus: $.proxy(this.show, this),
-                    keyup: $.proxy(this.update, this),
-                    keydown: $.proxy(this.keydown, this)
-                });
+		this._attachEvents();
 
-                this.component.on('click', $.proxy(this.show, this));
-        } else if(this.element.is('div')) {  //inline datepicker
-            this.isInline = true;
-        } else {
-            this.element.on('click', $.proxy(this.show, this));
-        }
+		this.forceParse = true;
+		if ('forceParse' in options) {
+			this.forceParse = options.forceParse;
+		} else if ('dateForceParse' in this.element.data()) {
+			this.forceParse = this.element.data('date-force-parse');
+		}
+		 
 
-        this.picker = $(DPGlobal.template)
-                            .appendTo(this.isInline ? this.element : 'body')
-                            .on({
-                                click: $.proxy(this.click, this),
-                                mousedown: $.proxy(this.mousedown, this)
-                            });
-
-        if(this.isInline) {
-            this.picker.addClass('datepicker-inline');
-        } else {
-            this.picker.addClass('dropdown-menu');
-        }
+		this.picker = $(DPGlobal.template)
+							.appendTo(this.isInline ? this.element : 'body')
+							.on({
+								click: $.proxy(this.click, this),
+								mousedown: $.proxy(this.mousedown, this)
+							});
 
+		if(this.isInline) {
+			this.picker.addClass('datepicker-inline');
+		} else {
+			this.picker.addClass('datepicker-dropdown dropdown-menu');
+		}
+		if (this.isRTL){
+			this.picker.addClass('datepicker-rtl');
+			this.picker.find('.prev i, .next i')
+						.toggleClass('icon-arrow-left icon-arrow-right');
+		}
 		$(document).on('mousedown', function (e) {
 			// Clicked outside the datepicker, hide it
-			if ($(e.target).closest('.datepicker').length == 0) {
+			if ($(e.target).closest('.datepicker').length === 0) {
 				that.hide();
 			}
 		});
@@ -99,6 +93,7 @@
 			this.keyboardNavigation = this.element.data('date-keyboard-navigation');
 		}
 
+		this.viewMode = this.startViewMode = 0;
 		switch(options.startView || this.element.data('date-start-view')){
 			case 2:
 			case 'decade':
@@ -108,11 +103,6 @@
 			case 'year':
 				this.viewMode = this.startViewMode = 1;
 				break;
-			case 0:
-			case 'month':
-			default:
-				this.viewMode = this.startViewMode = 0;
-				break;
 		}
 
 		this.todayBtn = (options.todayBtn||this.element.data('date-today-btn')||false);
@@ -122,21 +112,73 @@
 		this.weekEnd = ((this.weekStart + 6) % 7);
 		this.startDate = -Infinity;
 		this.endDate = Infinity;
+		this.daysOfWeekDisabled = [];
 		this.setStartDate(options.startDate||this.element.data('date-startdate'));
 		this.setEndDate(options.endDate||this.element.data('date-enddate'));
+		this.setDaysOfWeekDisabled(options.daysOfWeekDisabled||this.element.data('date-days-of-week-disabled'));
 		this.fillDow();
 		this.fillMonths();
 		this.update();
 		this.showMode();
 
-        if(this.isInline) {
-            this.show();
-        }
+		if(this.isInline) {
+			this.show();
+		}
 	};
 
 	Datepicker.prototype = {
 		constructor: Datepicker,
 
+		_events: [],
+		_attachEvents: function(){
+			this._detachEvents();
+			if (this.isInput) { // single input
+				this._events = [
+					[this.element, {
+						focus: $.proxy(this.show, this),
+						keyup: $.proxy(this.update, this),
+						keydown: $.proxy(this.keydown, this)
+					}]
+				];
+			}
+			else if (this.component && this.hasInput){ // component: input + button
+				this._events = [
+					// For components that are not readonly, allow keyboard nav
+					[this.element.find('input'), {
+						focus: $.proxy(this.show, this),
+						keyup: $.proxy(this.update, this),
+						keydown: $.proxy(this.keydown, this)
+					}],
+					[this.component, {
+						click: $.proxy(this.show, this)
+					}]
+				];
+			}
+						else if (this.element.is('div')) {  // inline datepicker
+							this.isInline = true;
+						}
+			else {
+				this._events = [
+					[this.element, {
+						click: $.proxy(this.show, this)
+					}]
+				];
+			}
+			for (var i=0, el, ev; i<this._events.length; i++){
+				el = this._events[i][0];
+				ev = this._events[i][1];
+				el.on(ev);
+			}
+		},
+		_detachEvents: function(){
+			for (var i=0, el, ev; i<this._events.length; i++){
+				el = this._events[i][0];
+				ev = this._events[i][1];
+				el.off(ev);
+			}
+			this._events = [];
+		},
+
 		show: function(e) {
 			this.picker.show();
 			this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
@@ -154,7 +196,7 @@
 		},
 
 		hide: function(e){
-            if(this.isInline) return;
+			if(this.isInline) return;
 			this.picker.hide();
 			$(window).off('resize', this.place);
 			this.viewMode = this.startViewMode;
@@ -162,7 +204,14 @@
 			if (!this.isInput) {
 				$(document).off('mousedown', this.hide);
 			}
-			if (e && e.currentTarget.value)
+
+			if (
+				this.forceParse &&
+				(
+					this.isInput && this.element.val() ||
+					this.hasInput && this.element.find('input').val()
+				)
+			)
 				this.setValue();
 			this.element.trigger({
 				type: 'hide',
@@ -170,9 +219,15 @@
 			});
 		},
 
+		remove: function() {
+			this._detachEvents();
+			this.picker.remove();
+			delete this.element.data().datepicker;
+		},
+
 		getDate: function() {
 			var d = this.getUTCDate();
-			return new Date(d.getTime() + (d.getTimezoneOffset()*60000))
+			return new Date(d.getTime() + (d.getTimezoneOffset()*60000));
 		},
 
 		getUTCDate: function() {
@@ -200,10 +255,10 @@
 			}
 		},
 
-        getFormattedDate: function(format) {
-            if(format == undefined) format = this.format;
-            return DPGlobal.formatDate(this.date, format, this.language);
-        },
+		getFormattedDate: function(format) {
+			if(format == undefined) format = this.format;
+			return DPGlobal.formatDate(this.date, format, this.language);
+		},
 
 		setStartDate: function(startDate){
 			this.startDate = startDate||-Infinity;
@@ -223,8 +278,20 @@
 			this.updateNavArrows();
 		},
 
+		setDaysOfWeekDisabled: function(daysOfWeekDisabled){
+			this.daysOfWeekDisabled = daysOfWeekDisabled||[];
+			if (!$.isArray(this.daysOfWeekDisabled)) {
+				this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/);
+			}
+			this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) {
+				return parseInt(d, 10);
+			});
+			this.update();
+			this.updateNavArrows();
+		},
+
 		place: function(){
-                        if(this.isInline) return;
+						if(this.isInline) return;
 			var zIndex = parseInt(this.element.parents().filter(function() {
 							return $(this).css('z-index') != 'auto';
 						}).first().css('z-index'))+10;
@@ -237,18 +304,19 @@
 		},
 
 		update: function(){
-            var date, fromArgs = false;
-            if(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {
-                date = arguments[0];
-                fromArgs = true;
-            } else {
-                date = this.isInput ? this.element.prop('value') : this.element.data('date') || this.element.find('input').prop('value');
-            }
+			var date, fromArgs = false;
+			if(arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) {
+				date = arguments[0];
+				fromArgs = true;
+			} else {
+				date = this.isInput ? this.element.prop('value') : this.element.data('date') || this.element.find('input').prop('value');
+			}
 
 			this.date = DPGlobal.parseDate(date, this.format, this.language);
 
-            if(fromArgs) this.setValue();
+			if(fromArgs) this.setValue();
 
+			var oldViewDate = this.viewDate;
 			if (this.date < this.startDate) {
 				this.viewDate = new Date(this.startDate);
 			} else if (this.date > this.endDate) {
@@ -256,12 +324,19 @@
 			} else {
 				this.viewDate = new Date(this.date);
 			}
+
+			if (oldViewDate && oldViewDate.getTime() != this.viewDate.getTime()){
+				this.element.trigger({
+					type: 'changeDate',
+					date: this.viewDate
+				});
+			}
 			this.fill();
 		},
 
 		fillDow: function(){
-			var dowCnt = this.weekStart;
-			var html = '<tr>';
+			var dowCnt = this.weekStart,
+			html = '<tr>';
 			while (dowCnt < this.weekStart + 7) {
 				html += '<th class="dow">'+dates[this.language].daysMin[(dowCnt++)%7]+'</th>';
 			}
@@ -270,8 +345,8 @@
 		},
 
 		fillMonths: function(){
-			var html = '';
-			var i = 0
+			var html = '',
+			i = 0;
 			while (i < 12) {
 				html += '<span class="month">'+dates[this.language].monthsShort[i++]+'</span>';
 			}
@@ -324,7 +399,8 @@
 				if (currentDate && prevMonth.valueOf() == currentDate) {
 					clsName += ' active';
 				}
-				if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate) {
+				if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate ||
+					$.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1) {
 					clsName += ' disabled';
 				}
 				html.push('<td class="day'+clsName+'">'+prevMonth.getUTCDate() + '</td>');
@@ -465,7 +541,7 @@
 							var year = this.viewDate.getUTCFullYear(),
 								month = this.viewDate.getUTCMonth();
 							if (target.is('.old')) {
-								if (month == 0) {
+								if (month === 0) {
 									month = 11;
 									year -= 1;
 								} else {
@@ -505,8 +581,8 @@
 			}
 			if (element) {
 				element.change();
-				if (this.autoclose) {
-									this.hide();
+				if (this.autoclose && (!which || which == 'date')) {
+					this.hide();
 				}
 			}
 		},
@@ -652,16 +728,16 @@
 			if (dir) {
 				this.viewMode = Math.max(0, Math.min(2, this.viewMode + dir));
 			}
-            /*
-              vitalets: fixing bug of very special conditions:
-              jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.
-              Method show() does not set display css correctly and datepicker is not shown.
-              Changed to .css('display', 'block') solve the problem.
-              See https://github.com/vitalets/x-editable/issues/37
-              
-              In jquery 1.7.2+ everything works fine.
-            */
-            //this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
+			/*
+			  vitalets: fixing bug of very special conditions:
+			  jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover.
+			  Method show() does not set display css correctly and datepicker is not shown.
+			  Changed to .css('display', 'block') solve the problem.
+			  See https://github.com/vitalets/x-editable/issues/37
+
+			  In jquery 1.7.2+ everything works fine.
+			*/
+			//this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
 			this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block');
 			this.updateNavArrows();
 		}
@@ -695,7 +771,7 @@
 			monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
 			today: "Today"
 		}
-	}
+	};
 
 	var DPGlobal = {
 		modes: [
@@ -720,8 +796,8 @@
 		getDaysInMonth: function (year, month) {
 			return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
 		},
-		validParts: /dd?|mm?|MM?|yy(?:yy)?/g,
-		nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\r]+/g,
+		validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
+		nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
 		parseFormat: function(format){
 			// IE treats \0 as a string end in inputs (truncating the value),
 			// so it's a bad format delimiter, anyway
@@ -781,10 +857,18 @@
 			setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
 			setters_map['dd'] = setters_map['d'];
 			date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
-			if (parts.length == format.parts.length) {
-				for (var i=0, cnt = format.parts.length; i < cnt; i++) {
+			var fparts = format.parts.slice();
+			// Remove noop parts
+			if (parts.length != fparts.length) {
+				fparts = $(fparts).filter(function(i,p){
+					return $.inArray(p, setters_order) !== -1;
+				}).toArray();
+			}
+			// Process remainder
+			if (parts.length == fparts.length) {
+				for (var i=0, cnt = fparts.length; i < cnt; i++) {
 					val = parseInt(parts[i], 10);
-					part = format.parts[i];
+					part = fparts[i];
 					if (isNaN(val)) {
 						switch(part) {
 							case 'MM':
@@ -809,7 +893,7 @@
 				}
 				for (var i=0, s; i<setters_order.length; i++){
 					s = setters_order[i];
-					if (s in parsed)
+					if (s in parsed && !isNaN(parsed[s]))
 						setters_map[s](date, parsed[s])
 				}
 			}
@@ -818,6 +902,8 @@
 		formatDate: function(date, format, language){
 			var val = {
 				d: date.getUTCDate(),
+				D: dates[language].daysShort[date.getUTCDay()],
+				DD: dates[language].days[date.getUTCDay()],
 				m: date.getUTCMonth() + 1,
 				M: dates[language].monthsShort[date.getUTCMonth()],
 				MM: dates[language].months[date.getUTCMonth()],
@@ -868,7 +954,7 @@
 								'</table>'+
 							'</div>'+
 						'</div>';
-                        
-    $.fn.datepicker.DPGlobal = DPGlobal;
-    
+
+	$.fn.datepicker.DPGlobal = DPGlobal;
+
 }( window.jQuery );
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js
deleted file mode 100644
index 015ee93..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Bulgarian translation for bootstrap-datepicker
- * Apostol Apostolov <apostol.s.apostolov@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['bg'] = {
-		days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
-		daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
-		daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
-		months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
-		monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
-		today: "днес"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.br.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.br.js
deleted file mode 100644
index a53b301..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.br.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Brazilian translation for bootstrap-datepicker
- * Cauan Cabral <cauan@radig.com.br>
- */
-;(function($){
-	$.fn.datepicker.dates['br'] = {
-		days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
-		daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
-		daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
-		months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
-		monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"]
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js
deleted file mode 100644
index d6b0d6c..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Czech translation for bootstrap-datepicker
- * Matěj Koubík <matej@koubik.name>
- */
-;(function($){
-	$.fn.datepicker.dates['cs'] = {
-		days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"],
-		daysShort: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"],
-		daysMin: ["N", "P", "Ú", "St", "Č", "P", "So", "N"],
-		months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
-		monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
-		today: "Dnes"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js
deleted file mode 100644
index 6307be5..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Danish translation for bootstrap-datepicker
- * Christian Pedersen <http://github.com/chripede>
- */
-;(function($){
-	$.fn.datepicker.dates['da'] = {
-		days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
-		daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
-		daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
-		months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
-		today: "I Dag"
-	};
-}(jQuery));
\ No newline at end of file
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js
deleted file mode 100644
index ca0c33f..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * German translation for bootstrap-datepicker
- * Sam Zurcher <sam@orelias.ch>
- */
-;(function($){
-	$.fn.datepicker.dates['de'] = {
-		days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
-		daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"],
-		daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
-		months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
-		monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
-		today: "Heute"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js
deleted file mode 100644
index 7217690..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Spanish translation for bootstrap-datepicker
- * Bruno Bonamin <bruno.bonamin@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['es'] = {
-		days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
-		daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"],
-		daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"],
-		months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
-		monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
-		today: "Hoy"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js
deleted file mode 100644
index e13e6b9..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Finnish translation for bootstrap-datepicker
- * Jaakko Salonen <https://github.com/jsalonen>
- */
-;(function($){
-	$.fn.datepicker.dates['fi'] = {
-		days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"],
-		daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"],
-		daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"],
-		months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
-		monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
-		today: "tänään"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js
deleted file mode 100644
index 9997340..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * French translation for bootstrap-datepicker
- * Nico Mollet <nico.mollet@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['fr'] = {
-		days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
-		daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
-		daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
-		months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
-		monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
-		today: "Aujourd'hui"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js
deleted file mode 100644
index d48aa48..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Bahasa translation for bootstrap-datepicker
- * Azwar Akbar <azwar.akbar@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['id'] = {
-		days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
-		daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"],
-		daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"],
-		months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"]
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js
deleted file mode 100644
index 0e57a91..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Icelandic translation for bootstrap-datepicker
- * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['is'] = {
-		days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"],
-		daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"],
-		daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"],
-		months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
-		today: "Í Dag"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js
deleted file mode 100644
index f153574..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Italian translation for bootstrap-datepicker
- * Enrico Rubboli <rubboli@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['it'] = {
-		days: ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica"],
-		daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
-		daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
-		months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
-		monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
-		today: "Oggi"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js
deleted file mode 100644
index cf0ea20..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Japanese translation for bootstrap-datepicker
- * Norio Suzuki <https://github.com/suzuki/>
- */
-;(function($){
-	$.fn.datepicker.dates['ja'] = {
-		days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"],
-		daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"],
-		daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"],
-		months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
-		monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js
deleted file mode 100644
index b5940ec..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Korean translation for bootstrap-datepicker
- * Gu Youn <http://github.com/guyoun>
- */
-;(function($){
-	$.fn.datepicker.dates['kr'] = {
-		days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
-		daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
-		daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
-		months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
-		monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js
deleted file mode 100644
index a0bf003..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Lithuanian translation for bootstrap-datepicker
- * Šarūnas Gliebus <ssharunas@yahoo.co.uk>
- */
-
-;(function($){
-    $.fn.datepicker.dates['lt'] = {
-        days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
-        daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
-        daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
-        months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
-        monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
-        weekStart: 1
-    };
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js
deleted file mode 100644
index cc75fe0..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Latvian translation for bootstrap-datepicker
- * Artis Avotins <artis@apit.lv>
- */
-
-;(function($){
-    $.fn.datepicker.dates['lv'] = {
-        days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"],
-        daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"],
-        daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"],
-        months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
-        monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."],
-        today: "Šodien",
-        weekStart: 1
-    };
-}(jQuery));
\ No newline at end of file
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js
deleted file mode 100644
index 13e9c93..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Malay translation for bootstrap-datepicker
- * Ateman Faiz <noorulfaiz@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['ms'] = {
-		days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"],
-		daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"],
-		daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"],
-		months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"]
-		today: "Hari Ini"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js
deleted file mode 100644
index fb9fe2a..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Norwegian (bokmål) translation for bootstrap-datepicker
- * Fredrik Sundmyhr <http://github.com/fsundmyhr>
- */
-;(function($){
-	$.fn.datepicker.dates['nb'] = {
-		days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
-		daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
-		daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
-		months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
-		today: "I Dag"
-	};
-}(jQuery));
\ No newline at end of file
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js
deleted file mode 100644
index 13a2f1a..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Dutch translation for bootstrap-datepicker
- * Reinier Goltstein <mrgoltstein@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['nl'] = {
-		days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
-		daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
-		daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
-		months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
-		monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
-		today: "Vandaag"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js
deleted file mode 100644
index 46c9996..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Polish translation for bootstrap-datepicker
- * Robert <rtpm@gazeta.pl>
- */
-;(function($){
-        $.fn.datepicker.dates['pl'] = {
-                days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"],
-                daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"],
-                daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"],
-                months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
-                monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"],
-                today: "Dzisiaj"
-        };
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js
deleted file mode 100644
index 8d1fc27..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Brazilian translation for bootstrap-datepicker
- * Cauan Cabral <cauan@radig.com.br>
- */
-;(function($){
-	$.fn.datepicker.dates['pt-BR'] = {
-		days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
-		daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
-		daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
-		months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
-		monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
-		today: "Hoje"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js
deleted file mode 100644
index 64179e8..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Portuguese translation for bootstrap-datepicker
- * Original code: Cauan Cabral <cauan@radig.com.br>
- * Tiago Melo <tiago.blackcode@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['pt'] = {
-		days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
-		daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
-		daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
-		months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
-		monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"]
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js
deleted file mode 100644
index 9404cff..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Russian translation for bootstrap-datepicker
- * Victor Taranenko <darwin@snowdale.com>
- */
-;(function($){
-	$.fn.datepicker.dates['ru'] = {
-		days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
-		daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"],
-		daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
-		months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
-		monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
-		today: "Сегодня"
-	};
-}(jQuery));
\ No newline at end of file
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js
deleted file mode 100644
index 41b0e06..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Slovene translation for bootstrap-datepicker
- * Gregor Rudolf <gregor.rudolf@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['sl'] = {
-		days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"],
-		daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"],
-		daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"],
-		months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
-		today: "Danes"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js
deleted file mode 100644
index 5cb1d0c..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Swedish translation for bootstrap-datepicker
- * Patrik Ragnarsson <patrik@starkast.net>
- */
-;(function($){
-	$.fn.datepicker.dates['sv'] = {
-		days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"],
-		daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"],
-		daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"],
-		months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
-		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
-		today: "I Dag"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js
deleted file mode 100644
index 562b063..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Thai translation for bootstrap-datepicker
- * Suchau Jiraprapot <seroz24@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['th'] = {
-		days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"],
-		daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
-		daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
-		months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
-		monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
-		today: "วันนี้"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
deleted file mode 100644
index e46eced..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Turkish translation for bootstrap-datepicker
- * Serkan Algur <kaisercrazy_2@hotmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['tr'] = {
-		days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"],
-		daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"],
-		daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"],
-		months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
-		monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
-		today: "Bugün"
-	};
-}(jQuery));
-
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js
deleted file mode 100644
index 7cdcd03..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Simplified Chinese translation for bootstrap-datepicker
- * Yuan Cheung <advanimal@gmail.com>
- */
-;(function($){
-	$.fn.datepicker.dates['zh-CN'] = {
-				days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
-			daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
-			daysMin:  ["日", "一", "二", "三", "四", "五", "六", "日"],
-			months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
-			monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
-			today: "今日"
-	};
-}(jQuery));
diff --git a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js b/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js
deleted file mode 100644
index d21afc1..0000000
--- a/src/inputs/date/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Traditional Chinese translation for bootstrap-datepicker
- * Rung-Sheng Jang <daniel@i-trend.co.cc>
- */
-;(function($){
-	$.fn.datepicker.dates['zh-TW'] = {
-				days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
-			daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
-			daysMin:  ["日", "一", "二", "三", "四", "五", "六", "日"],
-			months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
-			monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
-	};
-}(jQuery));