/*
Template Name: Color Admin - Responsive Admin Dashboard Template build with Twitter Bootstrap 4
Version: 4.4.0
Author: Sean Ngu
Website: http://www.seantheme.com/color-admin/admin/
*/

// IE8 browser support
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(elt /*, from*/) {
    	var len = this.length >>> 0;
    	var from = Number(arguments[1]) || 0;
    	from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    	if (from < 0)
      		from += len;

    	for (; from < len; from++) {
      		if (from in this && this[from] === elt)
        		return from;
    	}
    	return -1;
	};
}
if(typeof String.prototype.trim !== 'function') {
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g, ''); 
	}
}


var handleDatepicker = function() {
	$('#datepicker-default').datepicker({
		todayHighlight: true
	});
	$('#datepicker-inline').datepicker({
		todayHighlight: true
	});
	$('.input-daterange').datepicker({
		todayHighlight: true
	});
	$('#datepicker-disabled-past').datepicker({
		todayHighlight: true
	});
	$('#datepicker-autoClose').datepicker({
		todayHighlight: true,
		autoclose: true
	});
};

var handleIonRangeSlider = function() {
	$('#default_rangeSlider').ionRangeSlider({
		min: 0,
		max: 5000,
		type: 'double',
		prefix: "$",
		maxPostfix: "+",
		prettify: false,
		hasGrid: true,
		skin: 'big'
	});
	$('#customRange_rangeSlider').ionRangeSlider({
		min: 1000,
		max: 100000,
		from: 30000,
		to: 90000,
		type: 'double',
		step: 500,
		postfix: " €",
		hasGrid: true,
		skin: 'flat'
	});
	$('#customValue_rangeSlider').ionRangeSlider({
		values: [
			'January', 'February', 'March',
			'April', 'May', 'June',
			'July', 'August', 'September',
			'October', 'November', 'December'
		],
		type: 'single',
		hasGrid: true
	});
};

var handleFormMaskedInput = function() {
	"use strict";
	$("#masked-input-date").mask("99/99/9999");
	$("#masked-input-phone").mask("(999) 999-9999");
	$("#masked-input-tid").mask("99-9999999");
	$("#masked-input-ssn").mask("999-99-9999");
	$("#masked-input-pno").mask("aaa-9999-a");
	$("#masked-input-pkey").mask("a*-999-a999");
};

var handleFormColorPicker = function () {
	"use strict";
	$('#colorpicker').colorpicker({format: 'hex'});
	$('#colorpicker-append').colorpicker({format: 'hex'});
	$('#colorpicker-append').on('colorpickerChange', function(e) {
		var color = $('#colorpicker-append').colorpicker('getValue');
		
		$('#colorpicker-append').find('.input-group-text i').css('color', color);
	});
	$('#colorpicker-rgba').colorpicker();
};

var handleFormTimePicker = function () {
	"use strict";
	$('#timepicker').timepicker();
};

var handleFormPasswordIndicator = function() {
	"use strict";
	var options = {};
	options.ui = {
		container: '#pwd-default-container',
		viewports: { progress: '#pwstrength-default-progress' },
		showVerdictsInsideProgressBar: true,
		progressBarExtraCssClasses: 'progress-bar-striped'
	};
	options.common = {
		debug: true,
		onLoad: function () {
			$('#pwstrength-default-text').text('Start typing password...');
		}
	};
	$('#pwstrength-default').pwstrength(options);
	
	var options = {};
	options.ui = {
		container: '#pwd-popover-container',
		viewports: { progress: '#pwstrength-popover-progress' },
		showPopover: true,
		showErrors: true,
		showVerdictsInsideProgressBar: true,
		progressBarExtraCssClasses: 'progress-bar-striped'
	};
	options.common = {
		debug: true,
		onLoad: function () {
			$('#pwstrength-popover-text').text('Start typing password...');
		}
	};
	$('#pwstrength-popover').pwstrength(options);
};

var handleJqueryAutocomplete = function() {
	var availableTags = [
		'ActionScript',
		'AppleScript',
		'Asp',
		'BASIC',
		'C',
		'C++',
		'Clojure',
		'COBOL',
		'ColdFusion',
		'Erlang',
		'Fortran',
		'Groovy',
		'Haskell',
		'Java',
		'JavaScript',
		'Lisp',
		'Perl',
		'PHP',
		'Python',
		'Ruby',
		'Scala',
		'Scheme'
	];
	$('#jquery-autocomplete').autocomplete({
		source: availableTags
	});
};

var handleBootstrapCombobox = function() {
	$('.combobox').combobox();
};

var handleTagsInput = function() {
	$('.bootstrap-tagsinput input').focus(function() {
		$(this).closest('.bootstrap-tagsinput').addClass('bootstrap-tagsinput-focus');
	});
	$('.bootstrap-tagsinput input').focusout(function() {
		$(this).closest('.bootstrap-tagsinput').removeClass('bootstrap-tagsinput-focus');
	});
};

var handleSelectpicker = function() {
	$('.selectpicker').selectpicker('render');
};

var handleJqueryTagIt = function() {
	$('#jquery-tagIt-default').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-inverse').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-white').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-primary').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-info').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-success').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-warning').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
	$('#jquery-tagIt-danger').tagit({
		availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"]
	});
};

var handleDateRangePicker = function() {
	$('#default-daterange').daterangepicker({
		opens: 'right',
		format: 'MM/DD/YYYY',
		separator: ' to ',
		startDate: moment().subtract('days', 29),
		endDate: moment(),
		minDate: '01/01/2012',
		maxDate: '12/31/2018',
	}, function (start, end) {
		$('#default-daterange input').val(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
	});

	$('#advance-daterange span').html(moment().subtract('days', 29).format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY'));

	$('#advance-daterange').daterangepicker({
		format: 'MM/DD/YYYY',
		startDate: moment().subtract(29, 'days'),
		endDate: moment(),
		minDate: '01/01/2012',
		maxDate: '12/31/2015',
		dateLimit: { days: 60 },
		showDropdowns: true,
		showWeekNumbers: true,
		timePicker: false,
		timePickerIncrement: 1,
		timePicker12Hour: true,
		ranges: {
			'Today': [moment(), moment()],
			'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
			'Last 7 Days': [moment().subtract(6, 'days'), moment()],
			'Last 30 Days': [moment().subtract(29, 'days'), moment()],
			'This Month': [moment().startOf('month'), moment().endOf('month')],
			'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
		},
		opens: 'right',
		drops: 'down',
		buttonClasses: ['btn', 'btn-sm'],
		applyClass: 'btn-primary',
		cancelClass: 'btn-default',
		separator: ' to ',
		locale: {
			applyLabel: 'Submit',
			cancelLabel: 'Cancel',
			fromLabel: 'From',
			toLabel: 'To',
			customRangeLabel: 'Custom',
			daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr','Sa'],
			monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
			firstDay: 1
		}
	}, function(start, end, label) {
		$('#advance-daterange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
	});
};

var handleSelect2 = function() {
	$(".default-select2").select2();
	$(".multiple-select2").select2({ placeholder: "Select a state" });
};

var handleDateTimePicker = function() {
	$('#datetimepicker1').datetimepicker();
	$('#datetimepicker2').datetimepicker({
		format: 'LT'
	});
	$('#datetimepicker3').datetimepicker();
	$('#datetimepicker4').datetimepicker();
	$("#datetimepicker3").on("dp.change", function (e) {
		$('#datetimepicker4').data("DateTimePicker").minDate(e.date);
	});
	$("#datetimepicker4").on("dp.change", function (e) {
		$('#datetimepicker3').data("DateTimePicker").maxDate(e.date);
	});
};

var handleBootstrapColorPalette = function() {
	$('#color-palette-1').colorPalette().on('selectColor', function(e) {
		$('[data-id="color-palette-1"]').val(e.color);
	});
	var options = {
		colors:[['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#EFF7F7', '#FFFFFF']]
	}
	$('#color-palette-custom').colorPalette(options).on('selectColor', function(e) {
		$('[data-id="color-palette-custom"]').val(e.color);
	});
};

var handleSimpleColorpicker = function() {
	$('select[name="jquery-simplecolorpicker"]').simplecolorpicker('selectColor', '#2d353c');
	$('select[name="jquery-simplecolorpicker-fa"]').simplecolorpicker({theme: 'fontawesome'});
	$('select[name="colorpicker-picker-longlist"]').simplecolorpicker({picker: true, theme: 'glyphicons'});
};

var handleClipboard = function() {
	var clipboard = new ClipboardJS('.btn');
	
	clipboard.on('success', function(e) {
		$(e.trigger).tooltip({
			title: 'Copied',
			placement: 'top'
		});
		$(e.trigger).tooltip('show');
		setTimeout(function() {
			var bootstrapVersion = handleCheckBootstrapVersion();
			if (bootstrapVersion >= 3 && bootstrapVersion < 4) {
				$(e.trigger).tooltip('destroy');
			} else if (bootstrapVersion >= 4 && bootstrapVersion < 5) {
				$(e.trigger).tooltip('dispose');
			}
		}, 500);
	});
};


var FormPlugins = function () {
	"use strict";
	return {
		//main function
		init: function () {
			handleDatepicker();
			handleIonRangeSlider();
			handleFormMaskedInput();
			handleFormColorPicker();
			handleFormTimePicker();
			handleDateRangePicker();
			handleSelect2();
			handleFormPasswordIndicator();
			handleJqueryAutocomplete();
			handleBootstrapCombobox();
			handleSelectpicker();
			handleTagsInput();
			handleJqueryTagIt();
			handleBootstrapColorPalette();
			handleSimpleColorpicker();
			handleClipboard();
			handleDateTimePicker();
		}
	};
}();

$(document).ready(function() {
	FormPlugins.init();
});