<?php

if(getParam('token') != '8d70bde5baa8c762d02589c9e0a23d19')
	die ('Aqui não');

function getCon() {
	$con = null;
	switch ($_SERVER['HTTP_HOST']) {
		case 'crm.windel.com.br':
		$con = new mysqli('localhost', 'windel_webcrm', 'j7x^p?%qa#M2TcnpMa*2', 'windel_crm');
		break;
		case 'devel2.windel.com.br':
		$con = new mysqli('localhost', '', '', '');
		break;
		default:
		$con = new mysqli('localhost', 'root', 'root', 'crm');
		break;
	}
	if ($con->connect_errno) die('Erro de conexão número ' . $con->connect_errno . ': ' . $con->connect_error);
	return $con;
}

function getParam($param) {
	if(isset($_POST[$param]) && strlen($_POST[$param]) && $_POST[$param] != 'null') return addslashes($_POST[$param]);
	if(isset($_GET[$param]) && strlen($_GET[$param]) && $_GET[$param] != 'null') return addslashes($_GET[$param]);
	return null;
}
function pr($data) {
	echo '<pre>';
	print_r($data);
	echo '</pre>';
}
function debug($data) {
	echo '<pre>';
	var_dump($data);
	echo '</pre>';
}

set_time_limit(0);
ini_set('memory_limit', '-1');
ini_set('default_charset', 'ISO-8859-1');
date_default_timezone_set('America/Sao_paulo');

$con = getCon();


$inicio = DateTime::createFromFormat('d/m/Y', getParam('inicio'));
$fim = DateTime::createFromFormat('d/m/Y', getParam('fim'));

$relatorio = true;
$revendas = "";
if($inicio && $fim) {
	$revendas = $con->query("SELECT REV_IDREVENDA as id, REV_FANTASIA as revenda from revendas where revendas.REV_SITUACAO='A' order by REV_FANTASIA ASC");
} else {
	$relatorio = false;
}

function getAtendimentos($revenda, $con, $inicio, $fim) {
	$atendimentos = $con->query("
		SELECT
			count(*) as count
		FROM
		 	atendimentos 
		LEFT JOIN 
		 	motivos ON motivos.MOT_IDMOTIVO = atendimentos.ATD_IDMOTIVO
		LEFT JOIN
		    funcionarios ON funcionarios.FUN_IDFUNCIONARIO = atendimentos.ATD_IDFUNCIONARIO
		LEFT JOIN
		    funcionarios_revendas ON funcionarios_revendas.FRV_IDFUNCIONARIO  = funcionarios.FUN_IDFUNCIONARIO
		LEFT JOIN
		    revendas ON revendas.REV_IDREVENDA = funcionarios_revendas.FRV_IDREVENDA 
		WHERE
		    (
		        motivos.MOT_TIPO IN (2,3,5,6) OR
		        (
		            atendimentos.ATD_IDMOTIVO = -1 AND
		            atendimentos.ATD_TIPO = 'D'
		        )
		    ) AND
		    atendimentos.ATD_DTCADASTRO >= '{$inicio->format('Y-m-d')}' AND
		    atendimentos.ATD_DTCADASTRO <= '{$fim->format('Y-m-d')}' AND
		    atendimentos.ATD_SITUACAO = 'R' AND
		    revendas.REV_IDREVENDA={$revenda} AND
		    (
		    	funcionarios.FUN_IDSETOR IN (4,5) OR
		    	funcionarios.FUN_PRM_PRIVILEGIO = 9
		    ) AND
		    funcionarios.FUN_PRM_PRIVILEGIO NOT IN (1,7,11)

		GROUP BY revendas.REV_IDREVENDA

		ORDER BY revendas.REV_FANTASIA
	");
	$atendimentos = $atendimentos->fetch_assoc();
	return $atendimentos['count'] ? $atendimentos['count'] : 0;
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Relatório de atendimentos do comercial por unidade</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

	<!-- Optional theme -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

	<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
	<!-- Latest compiled and minified JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
	<style type="text/css">
		table {
			max-width: 80%!important;
			width: 80%!important;
			margin:  0 auto;
		}
	</style>
</head>
<body>
	<div class="container">
		<h2>Relatório de atendimentos comercial por unidade</h2>
		<form class="navbar-form navbar-left" role="search" method="get">
			<div class="form-group">
				<input type="hidden" name="token" value="8d70bde5baa8c762d02589c9e0a23d19">
				<input type="text" name="inicio" class="datepicker form-control col-xs-3" required="true" data-date-format="dd/mm/yyyy" placeholder="inicio" value="<?php echo getParam('inicio'); ?>">
				<input type="text" name="fim" class="datepicker form-control col-xs-3" required="true" data-date-format="dd/mm/yyyy" placeholder="fim" value="<?php echo getParam('fim'); ?>">
			</div>
			<button type="submit" class="btn btn-default">Gerar</button>
		</form>
	</div> <!-- /container -->
	<?php if($relatorio): ?>
	<table class="table">
		<thead>
			<tr>
				<th>Unidade de negócios</th>
				<th>Atendimentos</th>
			</tr>
		</thead>
		<tbody>
		 	<?php while($row = $revendas->fetch_assoc()): ?>
		 		<tr>
		 			<td><?php echo $row['revenda']; ?></td>
		 			<td><?php echo getAtendimentos($row['id'], $con, $inicio, $fim); ?></td>
		 		</tr>
			<?php endwhile; ?>
		</tbody>
	</table>
	<?php endif; ?>
	<style type="text/css">
		/*!
 * Datepicker for Bootstrap
 *
 * Copyright 2012 Stefan Petre
 * Licensed under the Apache License v2.0
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 */
 .datepicker {
 	top: 0;
 	left: 0;
 	padding: 4px;
 	margin-top: 1px;
 	-webkit-border-radius: 4px;
 	-moz-border-radius: 4px;
 	border-radius: 4px;
  /*.dow {
    border-top: 1px solid #ddd !important;
}*/

}
.datepicker:before {
	content: '';
	display: inline-block;
	border-left: 7px solid transparent;
	border-right: 7px solid transparent;
	border-bottom: 7px solid #ccc;
	border-bottom-color: rgba(0, 0, 0, 0.2);
	position: absolute;
	top: -7px;
	left: 6px;
}
.datepicker:after {
	content: '';
	display: inline-block;
	border-left: 6px solid transparent;
	border-right: 6px solid transparent;
	border-bottom: 6px solid #ffffff;
	position: absolute;
	top: -6px;
	left: 7px;
}
.datepicker > div {
	display: none;
}
.datepicker table {
	width: 100%;
	margin: 0;
}
.datepicker td,
.datepicker th {
	text-align: center;
	width: 20px;
	height: 20px;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.datepicker td.day:hover {
	background: #eeeeee;
	cursor: pointer;
}
.datepicker td.day.disabled {
	color: #eeeeee;
}
.datepicker td.old,
.datepicker td.new {
	color: #999999;
}
.datepicker td.active,
.datepicker td.active:hover {
	color: #ffffff;
	background-color: #006dcc;
	background-image: -moz-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(to bottom, #0088cc, #0044cc);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', 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);
	*background-color: #0044cc;
	/* Darken IE7 buttons by default so they stand out more given they won't have borders */

	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:focus,
.datepicker td.active:hover:focus,
.datepicker td.active:active,
.datepicker td.active:hover:active,
.datepicker td.active.active,
.datepicker td.active:hover.active,
.datepicker td.active.disabled,
.datepicker td.active:hover.disabled,
.datepicker td.active[disabled],
.datepicker td.active:hover[disabled] {
	color: #ffffff;
	background-color: #0044cc;
	*background-color: #003bb3;
}
.datepicker td.active:active,
.datepicker td.active:hover:active,
.datepicker td.active.active,
.datepicker td.active:hover.active {
	background-color: #003399 \9;
}
.datepicker td span {
	display: block;
	width: 47px;
	height: 54px;
	line-height: 54px;
	float: left;
	margin: 2px;
	cursor: pointer;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.datepicker td span:hover {
	background: #eeeeee;
}
.datepicker td span.active {
	color: #ffffff;
	background-color: #006dcc;
	background-image: -moz-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(to bottom, #0088cc, #0044cc);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', 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);
	*background-color: #0044cc;
	/* Darken IE7 buttons by default so they stand out more given they won't have borders */

	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:focus,
.datepicker td span.active:active,
.datepicker td span.active.active,
.datepicker td span.active.disabled,
.datepicker td span.active[disabled] {
	color: #ffffff;
	background-color: #0044cc;
	*background-color: #003bb3;
}
.datepicker td span.active:active,
.datepicker td span.active.active {
	background-color: #003399 \9;
}
.datepicker td span.old {
	color: #999999;
}
.datepicker th.switch {
	width: 145px;
}
.datepicker th.next,
.datepicker th.prev {
	font-size: 21px;
}
.datepicker thead tr:first-child th {
	cursor: pointer;
}
.datepicker thead tr:first-child th:hover {
	background: #eeeeee;
}
.input-append.date .add-on i,
.input-prepend.date .add-on i {
	display: block;
	cursor: pointer;
	width: 16px;
	height: 16px;
}
</style>
<script type="text/javascript">
	/* =========================================================
 * bootstrap-datepicker.js
 * http://www.eyecon.ro/bootstrap-datepicker
 * =========================================================
 * Copyright 2012 Stefan Petre
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ========================================================= */

 !function( $ ) {

	// Picker object

	var Datepicker = function(element, options){
		this.element = $(element);
		this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');
		this.picker = $(DPGlobal.template)
		.appendTo('body')
		.on({
								click: $.proxy(this.click, this)//,
								//mousedown: $.proxy(this.mousedown, this)
							});
		this.isInput = this.element.is('input');
		this.component = this.element.is('.date') ? this.element.find('.add-on') : false;

		if (this.isInput) {
			this.element.on({
				focus: $.proxy(this.show, this),
				//blur: $.proxy(this.hide, this),
				keyup: $.proxy(this.update, this)
			});
		} else {
			if (this.component){
				this.component.on('click', $.proxy(this.show, this));
			} else {
				this.element.on('click', $.proxy(this.show, this));
			}
		}

		this.minViewMode = options.minViewMode||this.element.data('date-minviewmode')||0;
		if (typeof this.minViewMode === 'string') {
			switch (this.minViewMode) {
				case 'months':
				this.minViewMode = 1;
				break;
				case 'years':
				this.minViewMode = 2;
				break;
				default:
				this.minViewMode = 0;
				break;
			}
		}
		this.viewMode = options.viewMode||this.element.data('date-viewmode')||0;
		if (typeof this.viewMode === 'string') {
			switch (this.viewMode) {
				case 'months':
				this.viewMode = 1;
				break;
				case 'years':
				this.viewMode = 2;
				break;
				default:
				this.viewMode = 0;
				break;
			}
		}
		this.startViewMode = this.viewMode;
		this.weekStart = options.weekStart||this.element.data('date-weekstart')||0;
		this.weekEnd = this.weekStart === 0 ? 6 : this.weekStart - 1;
		this.onRender = options.onRender;
		this.fillDow();
		this.fillMonths();
		this.update();
		this.showMode();
	};
	Datepicker.prototype = {
		constructor: Datepicker,

		show: function(e) {
			this.picker.show();
			this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
			this.place();
			$(window).on('resize', $.proxy(this.place, this));
			if (e ) {
				e.stopPropagation();
				e.preventDefault();
			}
			if (!this.isInput) {
			}
			var that = this;
			$(document).on('mousedown', function(ev){
				if ($(ev.target).closest('.datepicker').length == 0) {
					that.hide();
				}
			});
			this.element.trigger({
				type: 'show',
				date: this.date
			});
		},

		hide: function(){
			this.picker.hide();
			$(window).off('resize', this.place);
			this.viewMode = this.startViewMode;
			this.showMode();
			if (!this.isInput) {
				$(document).off('mousedown', this.hide);
			}
			//this.set();
			this.element.trigger({
				type: 'hide',
				date: this.date
			});
		},

		set: function() {
			var formated = DPGlobal.formatDate(this.date, this.format);
			if (!this.isInput) {
				if (this.component){
					this.element.find('input').prop('value', formated);
				}
				this.element.data('date', formated);
			} else {
				this.element.prop('value', formated);
			}
		},

		setValue: function(newDate) {
			if (typeof newDate === 'string') {
				this.date = DPGlobal.parseDate(newDate, this.format);
			} else {
				this.date = new Date(newDate);
			}
			this.set();
			this.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);
			this.fill();
		},

		place: function(){
			var offset = this.component ? this.component.offset() : this.element.offset();
			this.picker.css({
				top: offset.top + this.height,
				left: offset.left
			});
		},

		update: function(newDate){
			this.date = DPGlobal.parseDate(
				typeof newDate === 'string' ? newDate : (this.isInput ? this.element.prop('value') : this.element.data('date')),
				this.format
				);
			this.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);
			this.fill();
		},

		fillDow: function(){
			var dowCnt = this.weekStart;
			var html = '<tr>';
			while (dowCnt < this.weekStart + 7) {
				html += '<th class="dow">'+DPGlobal.dates.daysMin[(dowCnt++)%7]+'</th>';
			}
			html += '</tr>';
			this.picker.find('.datepicker-days thead').append(html);
		},

		fillMonths: function(){
			var html = '';
			var i = 0
			while (i < 12) {
				html += '<span class="month">'+DPGlobal.dates.monthsShort[i++]+'</span>';
			}
			this.picker.find('.datepicker-months td').append(html);
		},

		fill: function() {
			var d = new Date(this.viewDate),
			year = d.getFullYear(),
			month = d.getMonth(),
			currentDate = this.date.valueOf();
			this.picker.find('.datepicker-days th:eq(1)')
			.text(DPGlobal.dates.months[month]+' '+year);
			var prevMonth = new Date(year, month-1, 28,0,0,0,0),
			day = DPGlobal.getDaysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());
			prevMonth.setDate(day);
			prevMonth.setDate(day - (prevMonth.getDay() - this.weekStart + 7)%7);
			var nextMonth = new Date(prevMonth);
			nextMonth.setDate(nextMonth.getDate() + 42);
			nextMonth = nextMonth.valueOf();
			var html = [];
			var clsName,
			prevY,
			prevM;
			while(prevMonth.valueOf() < nextMonth) {
				if (prevMonth.getDay() === this.weekStart) {
					html.push('<tr>');
				}
				clsName = this.onRender(prevMonth);
				prevY = prevMonth.getFullYear();
				prevM = prevMonth.getMonth();
				if ((prevM < month &&  prevY === year) ||  prevY < year) {
					clsName += ' old';
				} else if ((prevM > month && prevY === year) || prevY > year) {
					clsName += ' new';
				}
				if (prevMonth.valueOf() === currentDate) {
					clsName += ' active';
				}
				html.push('<td class="day '+clsName+'">'+prevMonth.getDate() + '</td>');
				if (prevMonth.getDay() === this.weekEnd) {
					html.push('</tr>');
				}
				prevMonth.setDate(prevMonth.getDate()+1);
			}
			this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
			var currentYear = this.date.getFullYear();

			var months = this.picker.find('.datepicker-months')
			.find('th:eq(1)')
			.text(year)
			.end()
			.find('span').removeClass('active');
			if (currentYear === year) {
				months.eq(this.date.getMonth()).addClass('active');
			}

			html = '';
			year = parseInt(year/10, 10) * 10;
			var yearCont = this.picker.find('.datepicker-years')
			.find('th:eq(1)')
			.text(year + '-' + (year + 9))
			.end()
			.find('td');
			year -= 1;
			for (var i = -1; i < 11; i++) {
				html += '<span class="year'+(i === -1 || i === 10 ? ' old' : '')+(currentYear === year ? ' active' : '')+'">'+year+'</span>';
				year += 1;
			}
			yearCont.html(html);
		},

		click: function(e) {
			e.stopPropagation();
			e.preventDefault();
			var target = $(e.target).closest('span, td, th');
			if (target.length === 1) {
				switch(target[0].nodeName.toLowerCase()) {
					case 'th':
					switch(target[0].className) {
						case 'switch':
						this.showMode(1);
						break;
						case 'prev':
						case 'next':
						this.viewDate['set'+DPGlobal.modes[this.viewMode].navFnc].call(
							this.viewDate,
							this.viewDate['get'+DPGlobal.modes[this.viewMode].navFnc].call(this.viewDate) + 
							DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1)
							);
						this.fill();
						this.set();
						break;
					}
					break;
					case 'span':
					if (target.is('.month')) {
						var month = target.parent().find('span').index(target);
						this.viewDate.setMonth(month);
					} else {
						var year = parseInt(target.text(), 10)||0;
						this.viewDate.setFullYear(year);
					}
					if (this.viewMode !== 0) {
						this.date = new Date(this.viewDate);
						this.element.trigger({
							type: 'changeDate',
							date: this.date,
							viewMode: DPGlobal.modes[this.viewMode].clsName
						});
					}
					this.showMode(-1);
					this.fill();
					this.set();
					break;
					case 'td':
					if (target.is('.day') && !target.is('.disabled')){
						var day = parseInt(target.text(), 10)||1;
						var month = this.viewDate.getMonth();
						if (target.is('.old')) {
							month -= 1;
						} else if (target.is('.new')) {
							month += 1;
						}
						var year = this.viewDate.getFullYear();
						this.date = new Date(year, month, day,0,0,0,0);
						this.viewDate = new Date(year, month, Math.min(28, day),0,0,0,0);
						this.fill();
						this.set();
						this.element.trigger({
							type: 'changeDate',
							date: this.date,
							viewMode: DPGlobal.modes[this.viewMode].clsName
						});
					}
					break;
				}
			}
		},

		mousedown: function(e){
			e.stopPropagation();
			e.preventDefault();
		},

		showMode: function(dir) {
			if (dir) {
				this.viewMode = Math.max(this.minViewMode, Math.min(2, this.viewMode + dir));
			}
			this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
		}
	};
	$.fn.datepicker = function ( option, val ) {
		return this.each(function () {
			var $this = $(this),
			data = $this.data('datepicker'),
			options = typeof option === 'object' && option;
			if (!data) {
				$this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults,options))));
			}
			if (typeof option === 'string') data[option](val);
		});
	};

	$.fn.datepicker.defaults = {
		onRender: function(date) {
			return '';
		}
	};
	$.fn.datepicker.Constructor = Datepicker;

	var DPGlobal = {
		modes: [
		{
			clsName: 'days',
			navFnc: 'Month',
			navStep: 1
		},
		{
			clsName: 'months',
			navFnc: 'FullYear',
			navStep: 1
		},
		{
			clsName: 'years',
			navFnc: 'FullYear',
			navStep: 10
		}],
		dates:{
			days: ["Domingo", "Segunda", "Terça", "qUARTA", "Quinta", "Sexta", "Sábado", "Domingo"],
			daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
			daysMin: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
			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"]
		},
		isLeapYear: function (year) {
			return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))
		},
		getDaysInMonth: function (year, month) {
			return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
		},
		parseFormat: function(format){
			var separator = format.match(/[.\/\-\s].*?/),
			parts = format.split(/\W+/);
			if (!separator || !parts || parts.length === 0){
				throw new Error("Invalid date format.");
			}
			return {separator: separator, parts: parts};
		},
		parseDate: function(date, format) {
			var parts = date.split(format.separator),
			date = new Date(),
			val;
			date.setHours(0);
			date.setMinutes(0);
			date.setSeconds(0);
			date.setMilliseconds(0);
			if (parts.length === format.parts.length) {
				var year = date.getFullYear(), day = date.getDate(), month = date.getMonth();
				for (var i=0, cnt = format.parts.length; i < cnt; i++) {
					val = parseInt(parts[i], 10)||1;
					switch(format.parts[i]) {
						case 'dd':
						case 'd':
						day = val;
						date.setDate(val);
						break;
						case 'mm':
						case 'm':
						month = val - 1;
						date.setMonth(val - 1);
						break;
						case 'yy':
						year = 2000 + val;
						date.setFullYear(2000 + val);
						break;
						case 'yyyy':
						year = val;
						date.setFullYear(val);
						break;
					}
				}
				date = new Date(year, month, day, 0 ,0 ,0);
			}
			return date;
		},
		formatDate: function(date, format){
			var val = {
				d: date.getDate(),
				m: date.getMonth() + 1,
				yy: date.getFullYear().toString().substring(2),
				yyyy: date.getFullYear()
			};
			val.dd = (val.d < 10 ? '0' : '') + val.d;
			val.mm = (val.m < 10 ? '0' : '') + val.m;
			var date = [];
			for (var i=0, cnt = format.parts.length; i < cnt; i++) {
				date.push(val[format.parts[i]]);
			}
			return date.join(format.separator);
		},
		headTemplate: '<thead>'+
		'<tr>'+
		'<th class="prev">&lsaquo;</th>'+
		'<th colspan="5" class="switch"></th>'+
		'<th class="next">&rsaquo;</th>'+
		'</tr>'+
		'</thead>',
		contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>'
	};
	DPGlobal.template = '<div class="datepicker dropdown-menu">'+
	'<div class="datepicker-days">'+
	'<table class=" table-condensed">'+
	DPGlobal.headTemplate+
	'<tbody></tbody>'+
	'</table>'+
	'</div>'+
	'<div class="datepicker-months">'+
	'<table class="table-condensed">'+
	DPGlobal.headTemplate+
	DPGlobal.contTemplate+
	'</table>'+
	'</div>'+
	'<div class="datepicker-years">'+
	'<table class="table-condensed">'+
	DPGlobal.headTemplate+
	DPGlobal.contTemplate+
	'</table>'+
	'</div>'+
	'</div>';

}( window.jQuery );
// jQuery Mask Plugin v1.14.0
// github.com/igorescobar/jQuery-Mask-Plugin
(function(b){"function"===typeof define&&define.amd?define(["jquery"],b):"object"===typeof exports?module.exports=b(require("jquery")):b(jQuery||Zepto)})(function(b){var y=function(a,e,d){var c={invalid:[],getCaret:function(){try{var r,b=0,e=a.get(0),d=document.selection,f=e.selectionStart;if(d&&-1===navigator.appVersion.indexOf("MSIE 10"))r=d.createRange(),r.moveStart("character",-c.val().length),b=r.text.length;else if(f||"0"===f)b=f;return b}catch(g){}},setCaret:function(r){try{if(a.is(":focus")){var c,
b=a.get(0);b.setSelectionRange?(b.focus(),b.setSelectionRange(r,r)):(c=b.createTextRange(),c.collapse(!0),c.moveEnd("character",r),c.moveStart("character",r),c.select())}}catch(e){}},events:function(){a.on("keydown.mask",function(c){a.data("mask-keycode",c.keyCode||c.which)}).on(b.jMaskGlobals.useInput?"input.mask":"keyup.mask",c.behaviour).on("paste.mask drop.mask",function(){setTimeout(function(){a.keydown().keyup()},100)}).on("change.mask",function(){a.data("changed",!0)}).on("blur.mask",function(){n===
c.val()||a.data("changed")||a.trigger("change");a.data("changed",!1)}).on("blur.mask",function(){n=c.val()}).on("focus.mask",function(a){!0===d.selectOnFocus&&b(a.target).select()}).on("focusout.mask",function(){d.clearIfNotMatch&&!p.test(c.val())&&c.val("")})},getRegexMask:function(){for(var a=[],c,b,d,f,l=0;l<e.length;l++)(c=g.translation[e.charAt(l)])?(b=c.pattern.toString().replace(/.{1}$|^.{1}/g,""),d=c.optional,(c=c.recursive)?(a.push(e.charAt(l)),f={digit:e.charAt(l),pattern:b}):a.push(d||
c?b+"?":b)):a.push(e.charAt(l).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"));a=a.join("");f&&(a=a.replace(new RegExp("("+f.digit+"(.*"+f.digit+")?)"),"($1)?").replace(new RegExp(f.digit,"g"),f.pattern));return new RegExp(a)},destroyEvents:function(){a.off("input keydown keyup paste drop blur focusout ".split(" ").join(".mask "))},val:function(c){var b=a.is("input")?"val":"text";if(0<arguments.length){if(a[b]()!==c)a[b](c);b=a}else b=a[b]();return b},getMCharsBeforeCount:function(a,c){for(var b=0,d=0,
f=e.length;d<f&&d<a;d++)g.translation[e.charAt(d)]||(a=c?a+1:a,b++);return b},caretPos:function(a,b,d,h){return g.translation[e.charAt(Math.min(a-1,e.length-1))]?Math.min(a+d-b-h,d):c.caretPos(a+1,b,d,h)},behaviour:function(d){d=d||window.event;c.invalid=[];var e=a.data("mask-keycode");if(-1===b.inArray(e,g.byPassKeys)){var m=c.getCaret(),h=c.val().length,f=c.getMasked(),l=f.length,k=c.getMCharsBeforeCount(l-1)-c.getMCharsBeforeCount(h-1),n=m<h;c.val(f);n&&(8!==e&&46!==e&&(m=c.caretPos(m,h,l,k)),
c.setCaret(m));return c.callbacks(d)}},getMasked:function(a,b){var m=[],h=void 0===b?c.val():b+"",f=0,l=e.length,k=0,n=h.length,q=1,p="push",u=-1,t,w;d.reverse?(p="unshift",q=-1,t=0,f=l-1,k=n-1,w=function(){return-1<f&&-1<k}):(t=l-1,w=function(){return f<l&&k<n});for(;w();){var x=e.charAt(f),v=h.charAt(k),s=g.translation[x];if(s)v.match(s.pattern)?(m[p](v),s.recursive&&(-1===u?u=f:f===t&&(f=u-q),t===u&&(f-=q)),f+=q):s.optional?(f+=q,k-=q):s.fallback?(m[p](s.fallback),f+=q,k-=q):c.invalid.push({p:k,
v:v,e:s.pattern}),k+=q;else{if(!a)m[p](x);v===x&&(k+=q);f+=q}}h=e.charAt(t);l!==n+1||g.translation[h]||m.push(h);return m.join("")},callbacks:function(b){var g=c.val(),m=g!==n,h=[g,b,a,d],f=function(a,b,c){"function"===typeof d[a]&&b&&d[a].apply(this,c)};f("onChange",!0===m,h);f("onKeyPress",!0===m,h);f("onComplete",g.length===e.length,h);f("onInvalid",0<c.invalid.length,[g,b,a,c.invalid,d])}};a=b(a);var g=this,n=c.val(),p;e="function"===typeof e?e(c.val(),void 0,a,d):e;g.mask=e;g.options=d;g.remove=
function(){var b=c.getCaret();c.destroyEvents();c.val(g.getCleanVal());c.setCaret(b-c.getMCharsBeforeCount(b));return a};g.getCleanVal=function(){return c.getMasked(!0)};g.getMaskedVal=function(a){return c.getMasked(!1,a)};g.init=function(e){e=e||!1;d=d||{};g.clearIfNotMatch=b.jMaskGlobals.clearIfNotMatch;g.byPassKeys=b.jMaskGlobals.byPassKeys;g.translation=b.extend({},b.jMaskGlobals.translation,d.translation);g=b.extend(!0,{},g,d);p=c.getRegexMask();!1===e?(d.placeholder&&a.attr("placeholder",d.placeholder),
a.data("mask")&&a.attr("autocomplete","off"),c.destroyEvents(),c.events(),e=c.getCaret(),c.val(c.getMasked()),c.setCaret(e+c.getMCharsBeforeCount(e,!0))):(c.events(),c.val(c.getMasked()))};g.init(!a.is("input"))};b.maskWatchers={};var A=function(){var a=b(this),e={},d=a.attr("data-mask");a.attr("data-mask-reverse")&&(e.reverse=!0);a.attr("data-mask-clearifnotmatch")&&(e.clearIfNotMatch=!0);"true"===a.attr("data-mask-selectonfocus")&&(e.selectOnFocus=!0);if(z(a,d,e))return a.data("mask",new y(this,
d,e))},z=function(a,e,d){d=d||{};var c=b(a).data("mask"),g=JSON.stringify;a=b(a).val()||b(a).text();try{return"function"===typeof e&&(e=e(a)),"object"!==typeof c||g(c.options)!==g(d)||c.mask!==e}catch(n){}};b.fn.mask=function(a,e){e=e||{};var d=this.selector,c=b.jMaskGlobals,g=c.watchInterval,c=e.watchInputs||c.watchInputs,n=function(){if(z(this,a,e))return b(this).data("mask",new y(this,a,e))};b(this).each(n);d&&""!==d&&c&&(clearInterval(b.maskWatchers[d]),b.maskWatchers[d]=setInterval(function(){b(document).find(d).each(n)},
g));return this};b.fn.masked=function(a){return this.data("mask").getMaskedVal(a)};b.fn.unmask=function(){clearInterval(b.maskWatchers[this.selector]);delete b.maskWatchers[this.selector];return this.each(function(){var a=b(this).data("mask");a&&a.remove().removeData("mask")})};b.fn.cleanVal=function(){return this.data("mask").getCleanVal()};b.applyDataMask=function(a){a=a||b.jMaskGlobals.maskElements;(a instanceof b?a:b(a)).filter(b.jMaskGlobals.dataMaskAttr).each(A)};var p={maskElements:"input,td,span,div",
dataMaskAttr:"*[data-mask]",dataMask:!0,watchInterval:300,watchInputs:!0,useInput:function(a){var b=document.createElement("div"),d;a="on"+a;d=a in b;d||(b.setAttribute(a,"return;"),d="function"===typeof b[a]);return d}("input"),watchDataMask:!1,byPassKeys:[9,16,17,18,36,37,38,39,40,91],translation:{0:{pattern:/\d/},9:{pattern:/\d/,optional:!0},"#":{pattern:/\d/,recursive:!0},A:{pattern:/[a-zA-Z0-9]/},S:{pattern:/[a-zA-Z]/}}};b.jMaskGlobals=b.jMaskGlobals||{};p=b.jMaskGlobals=b.extend(!0,{},p,b.jMaskGlobals);
p.dataMask&&b.applyDataMask();setInterval(function(){b.jMaskGlobals.watchDataMask&&b.applyDataMask()},p.watchInterval)});

$('.datepicker').mask('00/00/0000');
$('.datepicker').datepicker();
</script>
</body>
</html>