jQuery DatePicker Example

by Héctor Cabrera

HTML

<div class="input-group">
	<input type="text" class="form-control" name="date" id="date" data-select="datepicker">
	<span class="input-group-btn"><button type="button" class="btn btn-primary" data-toggle="datepicker">Select a Date</button></span>
</div>

CSS

.datepicker {

	position: absolute;
	top: 18px;
	left: 18px;
	background: #FFF;
	padding: 4px;
	border: 1px solid #CCC;
	font-size: 16px;
	font-weight: 400;
	z-index: 50;
	/* box-shadow */
	-webkit-box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.15);
	box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.15);
}

.datepicker * {

	/* box-sizing */
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
}

.datepicker .tip {

	position: absolute;
	left: 12px;
	top: -12px;
	z-index: 5;
	width: 0;
	height: 0;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;
	border-bottom: 12px solid #CCC;
}

.datepicker .tip:before {

	content: ' ';
	position: absolute;
	left: -8px;
	top: 2px;
	z-index: 20;
	width: 0;
	height: 0;
	border-left: 8px solid transparent;
	border-right: 8px solid transparent;
	border-bottom: 10px solid #FFF;
}

.datepicker a {

	text-decoration: none;
	color: #000;
}

.datepicker .row {

	margin: 0;
	padding: 0;
	overflow: hidden;
	width: 100%;
}

.datepicker .row.header {

	text-align: center;
	position: relative;
	margin: 4px 0;
}

.datepicker .row.header a {

	margin: 0 3px;
	cursor: pointer;
}

.datepicker .row.header .prev {

	display: block;
	position: absolute;
	left: 0;
	top: 0;
	margin: 0;
	width: 10px;
	height: 10px;
	padding: 4px;
}

.datepicker .row.header .next {

	display: block;
	position: absolute;
	right: 0;
	top: 0;
	margin: 0;
	width: 10px;
	height: 10px;
	padding: 4px;
}

.datepicker .row.header .prev .arrow{
	display: block;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-right: 6px solid #000;
	border-bottom: 5px solid transparent;
	float: left;
}

.datepicker .row.header .next .arrow{
	display: block;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-left: 6px solid #000;
	border-bottom: 5px solid transparent;
	float: right;
}

.datepicker .row.header .prev.disabled {

	cursor: default;
}

.datepicker .row.header .next.disabled {

	cursor:...

JavaScript

/**
* jQuery DatePicker
* @author biohzrdmx <github.com/biohzrdmx>
* @version 1.0
* @requires jQuery 1.8+
* @license MIT
*/
;(function($) {
	//
	$.datePicker = {
		strings: {
			monthsFull: ['January', 'Febraury', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
			monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
			daysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
			daysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
			messageLocked: 'The day you have just selected is not available'
		},
		defaults: {
			formatDate: function(date) {
        //var formatted = $.datePicker.utils.pad(date.getDate(), 2) + '/' + $.datePicker.utils.pad(date.getMonth() + 1, 2) + '/' +  date.getFullYear();
				var formatted = $.datePicker.utils.pad(date.getMonth() + 1, 2) + '/' + $.datePicker.utils.pad(date.getDate(), 2) + '/' + date.getFullYear();

				return formatted;
			},
			parseDate: function(string) {
				var date = new Date();
        
        if ( string ) {
        	formatted_date = string.split('/');
        	date = new Date( formatted_date[2], formatted_date[0] - 1, formatted_date[1] );
        }
        
				return date;
			},
			selectDate: function(date) {
				return true;
			},
			limitCenturies: true,
			closeOnPick: true,
			appendTo: null
		},
		utils: {
			firstDay: function(year, month) {
				return new Date(year, month, 1).getDay();
			},
			daysInMonth: function(year, month) {
				return new Date(year, ++month, 0).getDate();
			},
			buildDecadePicker: function(century, year) {
				var obj = $.datePicker,
					decades = $('<div class="decades"></div>'),
					firstDecade = (Math.floor(century/100) * 100) - 10,
					limit = $.datePicker.defaults.limitCenturies;
				// Decade header
				var header = '<div class="row header">'+
								'<a href="#" class="prev'+(limit && firstDecade < 1900 ? ' disabled' : '')+'"><span...