/*=========================================================================================
    File Name: picker-date-time.js
    Description: Pick a date/time Picker, Date Range Picker JS
    ----------------------------------------------------------------------------------------
    Item Name: Modern Admin - Clean Bootstrap 4 Dashboard HTML Template
    Author: Pixinvent
    Author URL: hhttp://www.themeforest.net/user/pixinvent
==========================================================================================*/
(function (window, document, $) {
	'use strict';

	/*******	Pick-a-date Picker	*****/
	// Basic date
	$('.pickadate').pickadate();

	// Change Day & Month strings
	$('.pickadate-short-string').pickadate({
		weekdaysShort: ['S', 'M', 'Tu', 'W', 'Th', 'F', 'S'],
		showMonthsShort: true
	});

	// Select Year
	$('.pickadate-select-year').pickadate({
		selectYears: 8
	});

	// Change first weekday
	$('.pickadate-firstday').pickadate({
		firstDay: 1
	});

	// Button options
	$('.pickadate-buttons').pickadate({
		today: '',
		close: 'Close Picker',
		clear: ''
	});

	// Date limits
	$('.pickadate-limits').pickadate({
		min: [2016, 8, 20],
		max: [2016, 10, 30]
	});

	// Format options
	$('.pickadate-format').pickadate({
		// Escape any 'rule' characters with an exclamation mark (!).
		format: 'Selecte!d Date : dddd, dd mmmm, yyyy',
		formatSubmit: 'mm/dd/yyyy',
		hiddenPrefix: 'prefix__',
		hiddenSuffix: '__suffix'
	});

	$('.pickadate-arrow').pickadate({
		monthPrev: '&larr;',
		monthNext: '&rarr;',
		weekdaysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
		showMonthsFull: false
	});

	// Disable weekday range
	$('.pickadate-disable-weekday').pickadate({
		disable: [
			3
		]
	});

	// Disable dates
	$('.pickadate-disable-dates').pickadate({
		disable: [
			[2016, 5, 10],
			[2016, 5, 15],
			[2016, 5, 20]
		]
	});

	// Month & Year selectors
	$('.pickadate-selectors').pickadate({
		labelMonthNext: 'Next month',
		labelMonthPrev: 'Previous month',
		labelMonthSelect: 'Pick a Month',
		labelYearSelect: 'Pick a Year',
		selectMonths: true,
		selectYears: true
	});

	// With Select
	$('.pickadate-dropdown').pickadate({
		selectMonths: true,
		selectYears: true
	});

	// Events
	$('.pickadate-events').pickadate({
		onStart: function () {
			console.log('Hi there!!!');
		},
		onRender: function () {
			console.log('Holla... rendered new');
		},
		onOpen: function () {
			console.log('Picker Opened');
		},
		onClose: function () {
			console.log("I'm Closed now");
		},
		onStop: function () {
			console.log('Have a great day ahead!!');
		},
		onSet: function (context) {
			console.log('All stuff:', context);
		}
	});

	// Picker Translations
	$('.pickadate-translations').pickadate({
		formatSubmit: 'dd/mm/yyyy',
		monthsFull: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
		monthsShort: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'],
		weekdaysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
		today: 'aujourd\'hui',
		clear: 'clair',
		close: 'Fermer'
	});

	$('.pickadate-minmax').pickadate({
		dateMin: -8,
		dateMax: true
	});

	// Date Range from & to
	var from_$input = $('#picker_from').pickadate(),
		from_picker = from_$input.pickadate('picker');

	var to_$input = $('#picker_to').pickadate(),
		to_picker = to_$input.pickadate('picker');


	// Check if there’s a “from” or “to” date to start with.
	if (from_picker.get('value')) {
		to_picker.set('min', from_picker.get('select'));
	}
	if (to_picker.get('value')) {
		from_picker.set('max', to_picker.get('select'));
	}

	// When something is selected, update the “from” and “to” limits.
	from_picker.on('set', function (event) {
		if (event.select) {
			to_picker.set('min', from_picker.get('select'));
		} else if ('clear' in event) {
			to_picker.set('min', false);
		}
	});
	to_picker.on('set', function (event) {
		if (event.select) {
			from_picker.set('max', to_picker.get('select'));
		} else if ('clear' in event) {
			from_picker.set('max', false);
		}
	});


	/*******	Pick-a-time Picker	*****/
	// Basic time
	$('.pickatime').pickatime();

	// Hide Button
	$('.pickatime-button').pickatime({
		clear: '',
	});

	// Format options
	$('.pickatime-format').pickatime({
		// Escape any “rule” characters with an exclamation mark (!).
		format: 'T!ime selected: h:i a',
		formatLabel: 'h:i a',
		formatSubmit: 'HH:i',
		hiddenPrefix: 'prefix__',
		hiddenSuffix: '__suffix'
	});

	// Format options
	$('.pickatime-formatTime').pickatime({
		// Escape any “rule” characters with an exclamation mark (!).
		format: 'T!ime selected: h:i a',
		formatLabel: '<b>h</b>:i <!i>a</!i>',
		formatSubmit: 'HH:i',
		hiddenPrefix: 'prefix__',
		hiddenSuffix: '__suffix'
	});

	// Format options
	$('.pickatime-formatlabel').pickatime({
		formatLabel: function (time) {
			var hours = (time.pick - this.get('now').pick) / 60,
				label = hours < 0 ? ' !hours to now' : hours > 0 ? ' !hours from now' : 'now';
			return 'h:i a <sm!all>' + (hours ? Math.abs(hours) : '') + label + '</sm!all>';
		}
	});

	// Date range to select
	$('.pickatime-minmax').pickatime({

		// Using Javascript
		min: new Date(2015, 3, 20, 7),
		max: new Date(2015, 7, 14, 18, 30)

		// Using Array
		/*min: [7,30],
		max: [14,0]*/
	});

	// Time using Integer & Boolean
	$('.pickatime-limits').pickatime({
		// An integer (positive/negative) sets it as intervals relative from now.
		min: -5,
		// 'true' sets it to now. 'false' removes any limits.
		max: true
	});

	// Intervals
	$('.pickatime-intervals').pickatime({
		interval: 150
	});

	/*	Diasable Time sets */
	$('.pickatime-disable').pickatime({
		// Disable Using Javascript
		disable: [
			new Date(2016, 3, 20, 4, 30),
			new Date(2016, 3, 20, 9)
		]
		// Disable Using Array
		/*disable: [
			[0,30],
			[2,0],
			[8,30],
			[9,0]
		]*/
	});

	// Disable using integers
	$('.pickatime-disable-integer').pickatime({
		disable: [
			3, 5, 7, 13, 17, 21
		]
	});

	// Disable using object
	$('.pickatime-disable-object').pickatime({
		disable: [{
			from: [2, 0],
			to: [5, 30]
		}]
	});

	// Disable All
	$('.pickatime-disable-all').pickatime({
		disable: [
			true,
			3, 5, 7,
			[0, 30],
			[2, 0],
			[8, 30],
			[9, 0]
		]
	});

	// Close on a user action
	$('.pickatime-close-action').pickatime({
		closeOnSelect: false,
		closeOnClear: false
	});

	// Events
	$('.pickatime-events').pickatime({
		onStart: function () {
			console.log('This is PickATime!!!');
		},
		onRender: function () {
			console.log('Holla... PickATime Here');
		},
		onOpen: function () {
			console.log('PickATime Opened');
		},
		onClose: function () {
			console.log("I'm Closed now");
		},
		onStop: function () {
			console.log('Have a great day ahead!!');
		},
		onSet: function (context) {
			console.log('All stuff:', context);
		}
	});

	// Picker Translations
	$('.pickatime-translations').pickatime({
		formatSubmit: 'dd/mm/yyyy',
		monthsFull: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
		monthsShort: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'],
		weekdaysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
		today: 'aujourd\'hui',
		clear: 'clair',
		close: 'Fermer'
	});


	/*******	Bootstrap DateRangePicker	*****/

	// Basic Date Range Picker
	$('.daterange').daterangepicker();

	// Date & Time
	$('.datetime').daterangepicker({
		timePicker: true,
		timePickerIncrement: 30,
		locale: {
			format: 'MM/DD/YYYY h:mm A'
		}
	});

	//Calendars are not linked
	$('.timeseconds').daterangepicker({
		timePicker: true,
		timePickerIncrement: 30,
		timePicker24Hour: true,
		timePickerSeconds: true,
		locale: {
			format: 'MM-DD-YYYY h:mm:ss'
		}
	});

	// Single Date Range Picker
	$('.singledate').daterangepicker({
		singleDatePicker: true,
		showDropdowns: true
	});

	// Auto Apply Date Range
	$('.autoapply').daterangepicker({
		autoApply: true,
	});

	// Calendars are not linked
	$('.linkedCalendars').daterangepicker({
		linkedCalendars: false,
	});

	// Date Limit
	$('.dateLimit').daterangepicker({
		dateLimit: {
			days: 7
		},
	});

	// Show Dropdowns
	$('.showdropdowns').daterangepicker({
		showDropdowns: true,
	});

	// Show Week Numbers
	$('.showweeknumbers').daterangepicker({
		showWeekNumbers: true,
	});


	// Date Ranges
	$('.dateranges').daterangepicker({
		ranges: {
			'Today': [moment(), moment()],
			'Yesterday': [moment().startOf(1), moment().startOf(1)],
			'Last 7 Days': [moment().startOf(6), moment()],
			'Last 30 Days': [moment().startOf(29), moment()],
			'This Month': [moment().startOf('month'), moment().endOf('month')],
			'Last Month': [moment().startOf(1).startOf('month'), moment().startOf(1).endOf('month')]
		}
	});

	// Always Show Calendar on Ranges
	$('.shawCalRanges').daterangepicker({
		ranges: {
			'Today': [moment(), moment()],
			'Yesterday': [moment().startOf(1), moment().startOf(1)],
			'Last 7 Days': [moment().startOf(6), moment()],
			'Last 30 Days': [moment().startOf(29), moment()],
			'This Month': [moment().startOf('month'), moment().endOf('month')],
			'Last Month': [moment().startOf(1).startOf('month'), moment().startOf(1).endOf('month')]
		},
		alwaysShowCalendars: true,
	});

	// Date Limit
	$('.openRight').daterangepicker({
		opens: "left" // left/right/center
	});

	// Date Limit
	$('.drops').daterangepicker({
		drops: "up" // up/down
	});

	// Date Limit
	$('.buttonClass').daterangepicker({
		drops: "up",
		buttonClasses: "btn",
		applyClass: "btn-info",
		cancelClass: "btn-danger"
	});

	// Localization
	$('.localeRange').daterangepicker({
		ranges: {
			"Aujourd'hui": [moment(), moment()],
			'Hier': [moment().startOf(1), moment().startOf(1)],
			'Les 7 derniers jours': [moment().startOf(6), moment()],
			'Les 30 derniers jours': [moment().startOf(29), moment()],
			'Ce mois-ci': [moment().startOf('month'), moment().endOf('month')],
			'le mois dernier': [moment().startOf(1).startOf('month'), moment().startOf(1).endOf('month')]
		},
		locale: {
			applyLabel: "Vers l'avant",
			cancelLabel: 'Annulation',
			startLabel: 'Date initiale',
			endLabel: 'Date limite',
			customRangeLabel: 'Sélectionner une date',
			// daysOfWeek: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi','Samedi'],
			daysOfWeek: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
			monthNames: ['Janvier', 'février', 'Mars', 'Avril', 'Маi', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Decembre'],
			firstDay: 1
		}
	});
})(window, document, jQuery);
