/**
 * Resize function without multiple trigger
 * 
 * Usage:
 * $(window).smartresize(function(){  
 *     // code here
 * });
 */
(function ($, sr) {
	// debouncing function from John Hann
	// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
	var debounce = function (func, threshold, execAsap) {
		var timeout;

		return function debounced() {
			var obj = this, args = arguments;
			function delayed() {
				if (!execAsap)
					func.apply(obj, args);
				timeout = null;
			}

			if (timeout)
				clearTimeout(timeout);
			else if (execAsap)
				func.apply(obj, args);

			timeout = setTimeout(delayed, threshold || 100);
		};
	};

	// smartresize 
	jQuery.fn[sr] = function (fn) { return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };

})(jQuery, 'smartresize');
/**
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

var CURRENT_URL = window.location.href.split('#')[0].split('?')[0],
	$BODY = $('body'),
	$MENU_TOGGLE = $('#menu_toggle'),
	$SIDEBAR_MENU = $('#sidebar-menu'),
	$SIDEBAR_FOOTER = $('.sidebar-footer'),
	$LEFT_COL = $('.left_col'),
	$RIGHT_COL = $('.right_col'),
	$NAV_MENU = $('.nav_menu'),
	$FOOTER = $('footer');



// Sidebar
function init_sidebar() {
	// TODO: This is some kind of easy fix, maybe we can improve this
	var setContentHeight = function () {
		// reset height
		$RIGHT_COL.css('min-height', $(window).height());

		var bodyHeight = $BODY.outerHeight(),
			footerHeight = $BODY.hasClass('footer_fixed') ? -10 : $FOOTER.height(),
			leftColHeight = $LEFT_COL.eq(1).height() + $SIDEBAR_FOOTER.height(),
			contentHeight = bodyHeight < leftColHeight ? leftColHeight : bodyHeight;

		// normalize content
		contentHeight -= $NAV_MENU.height() + footerHeight + 50;
		$RIGHT_COL.css('min-height', contentHeight);
	};

	$SIDEBAR_MENU.find('a').on('click', function (ev) {
		console.log('clicked - sidebar_menu');
		var $li = $(this).parent();

		if ($li.is('.active')) {
			$li.removeClass('active active-sm');
			$('ul:first', $li).slideUp(function () {
				setContentHeight();
			});
		} else {
			// prevent closing menu if we are on child menu
			if (!$li.parent().is('.child_menu')) {
				$SIDEBAR_MENU.find('li').removeClass('active active-sm');
				$SIDEBAR_MENU.find('li ul').slideUp();
			} else {
				if ($BODY.is(".nav-sm")) {
					$SIDEBAR_MENU.find("li").removeClass("active active-sm");
					$SIDEBAR_MENU.find("li ul").slideUp();
				}
			}
			$li.addClass('active');

			$('ul:first', $li).slideDown(function () {
				setContentHeight();
			});
		}
	});

	// toggle small or large menu 
	$MENU_TOGGLE.on('click', function () {
		console.log('clicked - menu toggle');

		if ($BODY.hasClass('nav-md')) {
			$SIDEBAR_MENU.find('li.active ul').hide();
			$SIDEBAR_MENU.find('li.active').addClass('active-sm').removeClass('active');
		} else {
			$SIDEBAR_MENU.find('li.active-sm ul').show();
			$SIDEBAR_MENU.find('li.active-sm').addClass('active').removeClass('active-sm');
		}

		$BODY.toggleClass('nav-md nav-sm');

		setContentHeight();

		$('.dataTable').each(function () { $(this).dataTable().fnDraw(); });
	});

	// check active menu
	$SIDEBAR_MENU.find('a[href="' + CURRENT_URL + '"]').parent('li').addClass('current-page');

	$SIDEBAR_MENU.find('a').filter(function () {
		return this.href == CURRENT_URL;
	}).parent('li').addClass('current-page').parents('ul').slideDown(function () {
		setContentHeight();
	}).parent().addClass('active');

	// recompute content when resizing
	$(window).smartresize(function () {
		setContentHeight();
	});

	setContentHeight();

	// fixed sidebar
	if ($.fn.mCustomScrollbar) {
		$('.menu_fixed').mCustomScrollbar({
			autoHideScrollbar: true,
			theme: 'minimal',
			mouseWheel: { preventDefault: true }
		});
	}
};
// /Sidebar

var randNum = function () {
	return (Math.floor(Math.random() * (1 + 40 - 20))) + 20;
};


// Panel toolbox
$(document).ready(function () {
	$('.collapse-link').on('click', function () {
		var $BOX_PANEL = $(this).closest('.x_panel'),
			$ICON = $(this).find('i'),
			$BOX_CONTENT = $BOX_PANEL.find('.x_content');

		// fix for some div with hardcoded fix class
		if ($BOX_PANEL.attr('style')) {
			$BOX_CONTENT.slideToggle(200, function () {
				$BOX_PANEL.removeAttr('style');
			});
		} else {
			$BOX_CONTENT.slideToggle(200);
			$BOX_PANEL.css('height', 'auto');
		}

		$ICON.toggleClass('fa-chevron-up fa-chevron-down');
	});

	$('.close-link').click(function () {
		var $BOX_PANEL = $(this).closest('.x_panel');

		$BOX_PANEL.remove();
	});
});
// /Panel toolbox

// Tooltip
$(document).ready(function () {
	$('[data-toggle="tooltip"]').tooltip({
		container: 'body'
	});
});
// /Tooltip

// Progressbar
if ($(".progress .progress-bar")[0]) {
	$('.progress .progress-bar').progressbar();
}
// /Progressbar

// Switchery
$(document).ready(function () {
	if ($(".js-switch")[0]) {
		var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch'));
		elems.forEach(function (html) {
			var switchery = new Switchery(html, {
				color: '#26B99A'
			});
		});
	}
});
// /Switchery


// iCheck
$(document).ready(function () {
	if ($("input.flat")[0]) {
		$(document).ready(function () {
			$('input.flat').iCheck({
				checkboxClass: 'icheckbox_flat-green',
				radioClass: 'iradio_flat-green'
			});
		});
	}
});
// /iCheck

// Table
$('table input').on('ifChecked', function () {
	checkState = '';
	$(this).parent().parent().parent().addClass('selected');
	countChecked();
});
$('table input').on('ifUnchecked', function () {
	checkState = '';
	$(this).parent().parent().parent().removeClass('selected');
	countChecked();
});

var checkState = '';

$('.bulk_action input').on('ifChecked', function () {
	checkState = '';
	$(this).parent().parent().parent().addClass('selected');
	countChecked();
});
$('.bulk_action input').on('ifUnchecked', function () {
	checkState = '';
	$(this).parent().parent().parent().removeClass('selected');
	countChecked();
});
$('.bulk_action input#check-all').on('ifChecked', function () {
	checkState = 'all';
	countChecked();
});
$('.bulk_action input#check-all').on('ifUnchecked', function () {
	checkState = 'none';
	countChecked();
});

function countChecked() {
	if (checkState === 'all') {
		$(".bulk_action input[name='table_records']").iCheck('check');
	}
	if (checkState === 'none') {
		$(".bulk_action input[name='table_records']").iCheck('uncheck');
	}

	var checkCount = $(".bulk_action input[name='table_records']:checked").length;

	if (checkCount) {
		$('.column-title').hide();
		$('.bulk-actions').show();
		$('.action-cnt').html(checkCount + ' Records Selected');
	} else {
		$('.column-title').show();
		$('.bulk-actions').hide();
	}
}



// Accordion
$(document).ready(function () {
	$(".expand").on("click", function () {
		$(this).next().slideToggle(200);
		$expand = $(this).find(">:first-child");

		if ($expand.text() == "+") {
			$expand.text("-");
		} else {
			$expand.text("+");
		}
	});
});

// NProgress
if (typeof NProgress != 'undefined') {
	$(document).ready(function () {
		NProgress.start();
	});

	$(window).load(function () {
		NProgress.done();
	});
}


//hover and retain popover when on popover content
var originalLeave = $.fn.popover.Constructor.prototype.leave;
$.fn.popover.Constructor.prototype.leave = function (obj) {
	var self = obj instanceof this.constructor ?
		obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
	var container, timeout;

	originalLeave.call(this, obj);

	if (obj.currentTarget) {
		container = $(obj.currentTarget).siblings('.popover');
		timeout = self.timeout;
		container.one('mouseenter', function () {
			//We entered the actual popover – call off the dogs
			clearTimeout(timeout);
			//Let's monitor popover content instead
			container.one('mouseleave', function () {
				$.fn.popover.Constructor.prototype.leave.call(self, self);
			});
		});
	}
};

$('body').popover({
	selector: '[data-popover]',
	trigger: 'click hover',
	delay: {
		show: 50,
		hide: 400
	}
});


function gd(year, month, day) {
	return new Date(year, month - 1, day).getTime();
}


function init_flot_chart() {

	if (typeof ($.plot) === 'undefined') { return; }

	console.log('init_flot_chart');



	var arr_data1 = [
		[gd(2012, 1, 1), 17],
		[gd(2012, 1, 2), 74],
		[gd(2012, 1, 3), 6],
		[gd(2012, 1, 4), 39],
		[gd(2012, 1, 5), 20],
		[gd(2012, 1, 6), 85],
		[gd(2012, 1, 7), 7]
	];

	var arr_data2 = [
		[gd(2012, 1, 1), 82],
		[gd(2012, 1, 2), 23],
		[gd(2012, 1, 3), 66],
		[gd(2012, 1, 4), 9],
		[gd(2012, 1, 5), 119],
		[gd(2012, 1, 6), 6],
		[gd(2012, 1, 7), 9]
	];

	var arr_data3 = [
		[0, 1],
		[1, 9],
		[2, 6],
		[3, 10],
		[4, 5],
		[5, 17],
		[6, 6],
		[7, 10],
		[8, 7],
		[9, 11],
		[10, 35],
		[11, 9],
		[12, 12],
		[13, 5],
		[14, 3],
		[15, 4],
		[16, 9]
	];

	var chart_plot_02_data = [];

	var chart_plot_03_data = [
		[0, 1],
		[1, 9],
		[2, 6],
		[3, 10],
		[4, 5],
		[5, 17],
		[6, 6],
		[7, 10],
		[8, 7],
		[9, 11],
		[10, 35],
		[11, 9],
		[12, 12],
		[13, 5],
		[14, 3],
		[15, 4],
		[16, 9]
	];


	for (var i = 0; i < 30; i++) {
		chart_plot_02_data.push([new Date(Date.today().add(i).days()).getTime(), randNum() + i + i + 10]);
	}


	var chart_plot_01_settings = {
		series: {
			lines: {
				show: false,
				fill: true
			},
			splines: {
				show: true,
				tension: 0.4,
				lineWidth: 1,
				fill: 0.4
			},
			points: {
				radius: 0,
				show: true
			},
			shadowSize: 2
		},
		grid: {
			verticalLines: true,
			hoverable: true,
			clickable: true,
			tickColor: "#d5d5d5",
			borderWidth: 1,
			color: '#fff'
		},
		colors: ["rgba(38, 185, 154, 0.38)", "rgba(3, 88, 106, 0.38)"],
		xaxis: {
			tickColor: "rgba(51, 51, 51, 0.06)",
			mode: "time",
			tickSize: [1, "day"],
			//tickLength: 10,
			axisLabel: "Date",
			axisLabelUseCanvas: true,
			axisLabelFontSizePixels: 12,
			axisLabelFontFamily: 'Verdana, Arial',
			axisLabelPadding: 10
		},
		yaxis: {
			ticks: 8,
			tickColor: "rgba(51, 51, 51, 0.06)",
		},
		tooltip: false
	}

	var chart_plot_02_settings = {
		grid: {
			show: true,
			aboveData: true,
			color: "#3f3f3f",
			labelMargin: 10,
			axisMargin: 0,
			borderWidth: 0,
			borderColor: null,
			minBorderMargin: 5,
			clickable: true,
			hoverable: true,
			autoHighlight: true,
			mouseActiveRadius: 100
		},
		series: {
			lines: {
				show: true,
				fill: true,
				lineWidth: 2,
				steps: false
			},
			points: {
				show: true,
				radius: 4.5,
				symbol: "circle",
				lineWidth: 3.0
			}
		},
		legend: {
			position: "ne",
			margin: [0, -25],
			noColumns: 0,
			labelBoxBorderColor: null,
			labelFormatter: function (label, series) {
				return label + '&nbsp;&nbsp;';
			},
			width: 40,
			height: 1
		},
		colors: ['#96CA59', '#3F97EB', '#72c380', '#6f7a8a', '#f7cb38', '#5a8022', '#2c7282'],
		shadowSize: 0,
		tooltip: true,
		tooltipOpts: {
			content: "%s: %y.0",
			xDateFormat: "%d/%m",
			shifts: {
				x: -30,
				y: -50
			},
			defaultTheme: false
		},
		yaxis: {
			min: 0
		},
		xaxis: {
			mode: "time",
			minTickSize: [1, "day"],
			timeformat: "%d/%m/%y",
			min: chart_plot_02_data[0][0],
			max: chart_plot_02_data[20][0]
		}
	};

	var chart_plot_03_settings = {
		series: {
			curvedLines: {
				apply: true,
				active: true,
				monotonicFit: true
			}
		},
		colors: ["#26B99A"],
		grid: {
			borderWidth: {
				top: 0,
				right: 0,
				bottom: 1,
				left: 1
			},
			borderColor: {
				bottom: "#7F8790",
				left: "#7F8790"
			}
		}
	};


	if ($("#chart_plot_01").length) {
		console.log('Plot1');

		$.plot($("#chart_plot_01"), [arr_data1, arr_data2], chart_plot_01_settings);
	}


	if ($("#chart_plot_02").length) {
		console.log('Plot2');

		$.plot($("#chart_plot_02"),
			[{
				label: "Email Sent",
				data: chart_plot_02_data,
				lines: {
					fillColor: "rgba(150, 202, 89, 0.12)"
				},
				points: {
					fillColor: "#fff"
				}
			}], chart_plot_02_settings);

	}

	if ($("#chart_plot_03").length) {
		console.log('Plot3');


		$.plot($("#chart_plot_03"), [{
			label: "Registrations",
			data: chart_plot_03_data,
			lines: {
				fillColor: "rgba(150, 202, 89, 0.12)"
			},
			points: {
				fillColor: "#fff"
			}
		}], chart_plot_03_settings);

	};

}


/* STARRR */

function init_starrr() {

	if (typeof (starrr) === 'undefined') { return; }
	console.log('init_starrr');

	$(".stars").starrr();

	$('.stars-existing').starrr({
		rating: 4
	});

	$('.stars').on('starrr:change', function (e, value) {
		$('.stars-count').html(value);
	});

	$('.stars-existing').on('starrr:change', function (e, value) {
		$('.stars-count-existing').html(value);
	});

};


function init_JQVmap() {

	//console.log('check init_JQVmap [' + typeof (VectorCanvas) + '][' + typeof (jQuery.fn.vectorMap) + ']' );	

	if (typeof (jQuery.fn.vectorMap) === 'undefined') { return; }

	console.log('init_JQVmap');

	if ($('#world-map-gdp').length) {

		$('#world-map-gdp').vectorMap({
			map: 'world_en',
			backgroundColor: null,
			color: '#ffffff',
			hoverOpacity: 0.7,
			selectedColor: '#666666',
			enableZoom: true,
			showTooltip: true,
			values: sample_data,
			scaleColors: ['#E6F2F0', '#149B7E'],
			normalizeFunction: 'polynomial'
		});

	}

	if ($('#usa_map').length) {

		$('#usa_map').vectorMap({
			map: 'usa_en',
			backgroundColor: null,
			color: '#ffffff',
			hoverOpacity: 0.7,
			selectedColor: '#666666',
			enableZoom: true,
			showTooltip: true,
			values: sample_data,
			scaleColors: ['#E6F2F0', '#149B7E'],
			normalizeFunction: 'polynomial'
		});

	}

};


function init_skycons() {

	if (typeof (Skycons) === 'undefined') { return; }
	console.log('init_skycons');

	var icons = new Skycons({
		"color": "#73879C"
	}),
		list = [
			"clear-day", "clear-night", "partly-cloudy-day",
			"partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind",
			"fog"
		],
		i;

	for (i = list.length; i--;)
		icons.set(list[i], list[i]);

	icons.play();

}


function init_chart_doughnut() {

	if (typeof (Chart) === 'undefined') { return; }

	console.log('init_chart_doughnut');

	if ($('.canvasDoughnut').length) {

		var chart_doughnut_settings = {
			type: 'doughnut',
			tooltipFillColor: "rgba(51, 51, 51, 0.55)",
			data: {
				labels: [
					"Symbian",
					"Blackberry",
					"Other",
					"Android",
					"IOS"
				],
				datasets: [{
					data: [15, 20, 30, 10, 30],
					backgroundColor: [
						"#BDC3C7",
						"#9B59B6",
						"#E74C3C",
						"#26B99A",
						"#3498DB"
					],
					hoverBackgroundColor: [
						"#CFD4D8",
						"#B370CF",
						"#E95E4F",
						"#36CAAB",
						"#49A9EA"
					]
				}]
			},
			options: {
				legend: false,
				responsive: false
			}
		}

		$('.canvasDoughnut').each(function () {

			var chart_element = $(this);
			var chart_doughnut = new Chart(chart_element, chart_doughnut_settings);

		});

	}

}

function init_gauge() {

	if (typeof (Gauge) === 'undefined') { return; }

	console.log('init_gauge [' + $('.gauge-chart').length + ']');

	console.log('init_gauge');


	var chart_gauge_settings = {
		lines: 12,
		angle: 0,
		lineWidth: 0.4,
		pointer: {
			length: 0.75,
			strokeWidth: 0.042,
			color: '#1D212A'
		},
		limitMax: 'false',
		colorStart: '#1ABC9C',
		colorStop: '#1ABC9C',
		strokeColor: '#F0F3F3',
		generateGradient: true
	};


	if ($('#chart_gauge_01').length) {

		var chart_gauge_01_elem = document.getElementById('chart_gauge_01');
		var chart_gauge_01 = new Gauge(chart_gauge_01_elem).setOptions(chart_gauge_settings);

	}


	if ($('#gauge-text').length) {

		chart_gauge_01.maxValue = 6000;
		chart_gauge_01.animationSpeed = 32;
		chart_gauge_01.set(3200);
		chart_gauge_01.setTextField(document.getElementById("gauge-text"));

	}

	if ($('#chart_gauge_02').length) {

		var chart_gauge_02_elem = document.getElementById('chart_gauge_02');
		var chart_gauge_02 = new Gauge(chart_gauge_02_elem).setOptions(chart_gauge_settings);

	}


	if ($('#gauge-text2').length) {

		chart_gauge_02.maxValue = 9000;
		chart_gauge_02.animationSpeed = 32;
		chart_gauge_02.set(2400);
		chart_gauge_02.setTextField(document.getElementById("gauge-text2"));

	}


}

/* SPARKLINES */

function init_sparklines() {

	if (typeof (jQuery.fn.sparkline) === 'undefined') { return; }
	console.log('init_sparklines');


	$(".sparkline_one").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
		type: 'bar',
		height: '125',
		barWidth: 13,
		colorMap: {
			'7': '#a1a1a1'
		},
		barSpacing: 2,
		barColor: '#26B99A'
	});


	$(".sparkline_two").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
		type: 'bar',
		height: '40',
		barWidth: 9,
		colorMap: {
			'7': '#a1a1a1'
		},
		barSpacing: 2,
		barColor: '#26B99A'
	});


	$(".sparkline_three").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 7, 5, 4, 3, 5, 6], {
		type: 'line',
		width: '200',
		height: '40',
		lineColor: '#26B99A',
		fillColor: 'rgba(223, 223, 223, 0.57)',
		lineWidth: 2,
		spotColor: '#26B99A',
		minSpotColor: '#26B99A'
	});


	$(".sparkline11").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3], {
		type: 'bar',
		height: '40',
		barWidth: 8,
		colorMap: {
			'7': '#a1a1a1'
		},
		barSpacing: 2,
		barColor: '#26B99A'
	});


	$(".sparkline22").sparkline([2, 4, 3, 4, 7, 5, 4, 3, 5, 6, 2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 6], {
		type: 'line',
		height: '40',
		width: '200',
		lineColor: '#26B99A',
		fillColor: '#ffffff',
		lineWidth: 3,
		spotColor: '#34495E',
		minSpotColor: '#34495E'
	});


	$(".sparkline_bar").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
		type: 'bar',
		colorMap: {
			'7': '#a1a1a1'
		},
		barColor: '#26B99A'
	});


	$(".sparkline_area").sparkline([5, 6, 7, 9, 9, 5, 3, 2, 2, 4, 6, 7], {
		type: 'line',
		lineColor: '#26B99A',
		fillColor: '#26B99A',
		spotColor: '#4578a0',
		minSpotColor: '#728fb2',
		maxSpotColor: '#6d93c4',
		highlightSpotColor: '#ef5179',
		highlightLineColor: '#8ba8bf',
		spotRadius: 2.5,
		width: 85
	});


	$(".sparkline_line").sparkline([2, 4, 3, 4, 5, 4, 5, 4, 3, 4, 5, 6, 4, 5, 6, 3, 5], {
		type: 'line',
		lineColor: '#26B99A',
		fillColor: '#ffffff',
		width: 85,
		spotColor: '#34495E',
		minSpotColor: '#34495E'
	});


	$(".sparkline_pie").sparkline([1, 1, 2, 1], {
		type: 'pie',
		sliceColors: ['#26B99A', '#ccc', '#75BCDD', '#D66DE2']
	});


	$(".sparkline_discreet").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 2, 4, 3, 7, 8, 9, 7, 6, 4, 3], {
		type: 'discrete',
		barWidth: 3,
		lineColor: '#26B99A',
		width: '85',
	});


};


/* AUTOCOMPLETE */

function init_autocomplete() {

	if (typeof (autocomplete) === 'undefined') { return; }
	console.log('init_autocomplete');

	var countries = { AD: "Andorra", A2: "Andorra Test", AE: "United Arab Emirates", AF: "Afghanistan", AG: "Antigua and Barbuda", AI: "Anguilla", AL: "Albania", AM: "Armenia", AN: "Netherlands Antilles", AO: "Angola", AQ: "Antarctica", AR: "Argentina", AS: "American Samoa", AT: "Austria", AU: "Australia", AW: "Aruba", AX: "Åland Islands", AZ: "Azerbaijan", BA: "Bosnia and Herzegovina", BB: "Barbados", BD: "Bangladesh", BE: "Belgium", BF: "Burkina Faso", BG: "Bulgaria", BH: "Bahrain", BI: "Burundi", BJ: "Benin", BL: "Saint Barthélemy", BM: "Bermuda", BN: "Brunei", BO: "Bolivia", BQ: "British Antarctic Territory", BR: "Brazil", BS: "Bahamas", BT: "Bhutan", BV: "Bouvet Island", BW: "Botswana", BY: "Belarus", BZ: "Belize", CA: "Canada", CC: "Cocos [Keeling] Islands", CD: "Congo - Kinshasa", CF: "Central African Republic", CG: "Congo - Brazzaville", CH: "Switzerland", CI: "Côte d’Ivoire", CK: "Cook Islands", CL: "Chile", CM: "Cameroon", CN: "China", CO: "Colombia", CR: "Costa Rica", CS: "Serbia and Montenegro", CT: "Canton and Enderbury Islands", CU: "Cuba", CV: "Cape Verde", CX: "Christmas Island", CY: "Cyprus", CZ: "Czech Republic", DD: "East Germany", DE: "Germany", DJ: "Djibouti", DK: "Denmark", DM: "Dominica", DO: "Dominican Republic", DZ: "Algeria", EC: "Ecuador", EE: "Estonia", EG: "Egypt", EH: "Western Sahara", ER: "Eritrea", ES: "Spain", ET: "Ethiopia", FI: "Finland", FJ: "Fiji", FK: "Falkland Islands", FM: "Micronesia", FO: "Faroe Islands", FQ: "French Southern and Antarctic Territories", FR: "France", FX: "Metropolitan France", GA: "Gabon", GB: "United Kingdom", GD: "Grenada", GE: "Georgia", GF: "French Guiana", GG: "Guernsey", GH: "Ghana", GI: "Gibraltar", GL: "Greenland", GM: "Gambia", GN: "Guinea", GP: "Guadeloupe", GQ: "Equatorial Guinea", GR: "Greece", GS: "South Georgia and the South Sandwich Islands", GT: "Guatemala", GU: "Guam", GW: "Guinea-Bissau", GY: "Guyana", HK: "Hong Kong SAR China", HM: "Heard Island and McDonald Islands", HN: "Honduras", HR: "Croatia", HT: "Haiti", HU: "Hungary", ID: "Indonesia", IE: "Ireland", IL: "Israel", IM: "Isle of Man", IN: "India", IO: "British Indian Ocean Territory", IQ: "Iraq", IR: "Iran", IS: "Iceland", IT: "Italy", JE: "Jersey", JM: "Jamaica", JO: "Jordan", JP: "Japan", JT: "Johnston Island", KE: "Kenya", KG: "Kyrgyzstan", KH: "Cambodia", KI: "Kiribati", KM: "Comoros", KN: "Saint Kitts and Nevis", KP: "North Korea", KR: "South Korea", KW: "Kuwait", KY: "Cayman Islands", KZ: "Kazakhstan", LA: "Laos", LB: "Lebanon", LC: "Saint Lucia", LI: "Liechtenstein", LK: "Sri Lanka", LR: "Liberia", LS: "Lesotho", LT: "Lithuania", LU: "Luxembourg", LV: "Latvia", LY: "Libya", MA: "Morocco", MC: "Monaco", MD: "Moldova", ME: "Montenegro", MF: "Saint Martin", MG: "Madagascar", MH: "Marshall Islands", MI: "Midway Islands", MK: "Macedonia", ML: "Mali", MM: "Myanmar [Burma]", MN: "Mongolia", MO: "Macau SAR China", MP: "Northern Mariana Islands", MQ: "Martinique", MR: "Mauritania", MS: "Montserrat", MT: "Malta", MU: "Mauritius", MV: "Maldives", MW: "Malawi", MX: "Mexico", MY: "Malaysia", MZ: "Mozambique", NA: "Namibia", NC: "New Caledonia", NE: "Niger", NF: "Norfolk Island", NG: "Nigeria", NI: "Nicaragua", NL: "Netherlands", NO: "Norway", NP: "Nepal", NQ: "Dronning Maud Land", NR: "Nauru", NT: "Neutral Zone", NU: "Niue", NZ: "New Zealand", OM: "Oman", PA: "Panama", PC: "Pacific Islands Trust Territory", PE: "Peru", PF: "French Polynesia", PG: "Papua New Guinea", PH: "Philippines", PK: "Pakistan", PL: "Poland", PM: "Saint Pierre and Miquelon", PN: "Pitcairn Islands", PR: "Puerto Rico", PS: "Palestinian Territories", PT: "Portugal", PU: "U.S. Miscellaneous Pacific Islands", PW: "Palau", PY: "Paraguay", PZ: "Panama Canal Zone", QA: "Qatar", RE: "Réunion", RO: "Romania", RS: "Serbia", RU: "Russia", RW: "Rwanda", SA: "Saudi Arabia", SB: "Solomon Islands", SC: "Seychelles", SD: "Sudan", SE: "Sweden", SG: "Singapore", SH: "Saint Helena", SI: "Slovenia", SJ: "Svalbard and Jan Mayen", SK: "Slovakia", SL: "Sierra Leone", SM: "San Marino", SN: "Senegal", SO: "Somalia", SR: "Suriname", ST: "São Tomé and Príncipe", SU: "Union of Soviet Socialist Republics", SV: "El Salvador", SY: "Syria", SZ: "Swaziland", TC: "Turks and Caicos Islands", TD: "Chad", TF: "French Southern Territories", TG: "Togo", TH: "Thailand", TJ: "Tajikistan", TK: "Tokelau", TL: "Timor-Leste", TM: "Turkmenistan", TN: "Tunisia", TO: "Tonga", TR: "Turkey", TT: "Trinidad and Tobago", TV: "Tuvalu", TW: "Taiwan", TZ: "Tanzania", UA: "Ukraine", UG: "Uganda", UM: "U.S. Minor Outlying Islands", US: "United States", UY: "Uruguay", UZ: "Uzbekistan", VA: "Vatican City", VC: "Saint Vincent and the Grenadines", VD: "North Vietnam", VE: "Venezuela", VG: "British Virgin Islands", VI: "U.S. Virgin Islands", VN: "Vietnam", VU: "Vanuatu", WF: "Wallis and Futuna", WK: "Wake Island", WS: "Samoa", YD: "People's Democratic Republic of Yemen", YE: "Yemen", YT: "Mayotte", ZA: "South Africa", ZM: "Zambia", ZW: "Zimbabwe", ZZ: "Unknown or Invalid Region" };

	var countriesArray = $.map(countries, function (value, key) {
		return {
			value: value,
			data: key
		};
	});

	// initialize autocomplete with custom appendTo
	$('#autocomplete-custom-append').autocomplete({
		lookup: countriesArray
	});

};

/* AUTOSIZE */

function init_autosize() {

	if (typeof $.fn.autosize !== 'undefined') {

		autosize($('.resizable_textarea'));

	}

};

/* PARSLEY */

function init_parsley() {

	if (typeof (parsley) === 'undefined') { return; }
	console.log('init_parsley');

	$/*.listen*/('parsley:field:validate', function () {
		validateFront();
	});
	$('#demo-form .btn').on('click', function () {
		$('#demo-form').parsley().validate();
		validateFront();
	});
	var validateFront = function () {
		if (true === $('#demo-form').parsley().isValid()) {
			$('.bs-callout-info').removeClass('hidden');
			$('.bs-callout-warning').addClass('hidden');
		} else {
			$('.bs-callout-info').addClass('hidden');
			$('.bs-callout-warning').removeClass('hidden');
		}
	};

	$/*.listen*/('parsley:field:validate', function () {
		validateFront();
	});
	$('#demo-form2 .btn').on('click', function () {
		$('#demo-form2').parsley().validate();
		validateFront();
	});
	var validateFront = function () {
		if (true === $('#demo-form2').parsley().isValid()) {
			$('.bs-callout-info').removeClass('hidden');
			$('.bs-callout-warning').addClass('hidden');
		} else {
			$('.bs-callout-info').addClass('hidden');
			$('.bs-callout-warning').removeClass('hidden');
		}
	};

	try {
		hljs.initHighlightingOnLoad();
	} catch (err) { }

};


/* INPUTS */

function onAddTag(tag) {
	alert("Added a tag: " + tag);
}

function onRemoveTag(tag) {
	alert("Removed a tag: " + tag);
}

function onChangeTag(input, tag) {
	alert("Changed a tag: " + tag);
}

//tags input
function init_TagsInput() {

	if (typeof $.fn.tagsInput !== 'undefined') {

		$('#tags_1').tagsInput({
			width: 'auto'
		});

	}

};

/* SELECT2 */

function init_select2() {

	if (typeof (select2) === 'undefined') { return; }
	console.log('init_toolbox');

	$(".select2_single").select2({
		placeholder: "Select a state",
		allowClear: true
	});
	$(".select2_group").select2({});
	$(".select2_multiple").select2({
		maximumSelectionLength: 4,
		placeholder: "With Max Selection limit 4",
		allowClear: true
	});

};

/* WYSIWYG EDITOR */

function init_wysiwyg() {

	if (typeof ($.fn.wysiwyg) === 'undefined') { return; }
	console.log('init_wysiwyg');

	function init_ToolbarBootstrapBindings() {
		var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier',
			'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times',
			'Times New Roman', 'Verdana'
		],
			fontTarget = $('[title=Font]').siblings('.dropdown-menu');
		$.each(fonts, function (idx, fontName) {
			fontTarget.append($('<li><a data-edit="fontName ' + fontName + '" style="font-family:\'' + fontName + '\'">' + fontName + '</a></li>'));
		});
		$('a[title]').tooltip({
			container: 'body'
		});
		$('.dropdown-menu input').click(function () {
			return false;
		})
			.change(function () {
				$(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');
			})
			.keydown('esc', function () {
				this.value = '';
				$(this).change();
			});

		$('[data-role=magic-overlay]').each(function () {
			var overlay = $(this),
				target = $(overlay.data('target'));
			overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());
		});

		if ("onwebkitspeechchange" in document.createElement("input")) {
			var editorOffset = $('#editor').offset();

			$('.voiceBtn').css('position', 'absolute').offset({
				top: editorOffset.top,
				left: editorOffset.left + $('#editor').innerWidth() - 35
			});
		} else {
			$('.voiceBtn').hide();
		}
	}

	function showErrorAlert(reason, detail) {
		var msg = '';
		if (reason === 'unsupported-file-type') {
			msg = "Unsupported format " + detail;
		} else {
			console.log("error uploading file", reason, detail);
		}
		$('<div class="alert"> <button type="button" class="close" data-dismiss="alert">&times;</button>' +
			'<strong>File upload error</strong> ' + msg + ' </div>').prependTo('#alerts');
	}

	$('.editor-wrapper').each(function () {
		var id = $(this).attr('id');	//editor-one

		$(this).wysiwyg({
			toolbarSelector: '[data-target="#' + id + '"]',
			fileUploadError: showErrorAlert
		});
	});


	window.prettyPrint;
	prettyPrint();

};

/* CROPPER */

function init_cropper() {


	if (typeof ($.fn.cropper) === 'undefined') { return; }
	console.log('init_cropper');

	var $image = $('#image');
	var $download = $('#download');
	var $dataX = $('#dataX');
	var $dataY = $('#dataY');
	var $dataHeight = $('#dataHeight');
	var $dataWidth = $('#dataWidth');
	var $dataRotate = $('#dataRotate');
	var $dataScaleX = $('#dataScaleX');
	var $dataScaleY = $('#dataScaleY');
	var options = {
		aspectRatio: 16 / 9,
		preview: '.img-preview',
		crop: function (e) {
			$dataX.val(Math.round(e.x));
			$dataY.val(Math.round(e.y));
			$dataHeight.val(Math.round(e.height));
			$dataWidth.val(Math.round(e.width));
			$dataRotate.val(e.rotate);
			$dataScaleX.val(e.scaleX);
			$dataScaleY.val(e.scaleY);
		}
	};


	// Tooltip
	$('[data-toggle="tooltip"]').tooltip();


	// Cropper
	$image.on({
		'build.cropper': function (e) {
			console.log(e.type);
		},
		'built.cropper': function (e) {
			console.log(e.type);
		},
		'cropstart.cropper': function (e) {
			console.log(e.type, e.action);
		},
		'cropmove.cropper': function (e) {
			console.log(e.type, e.action);
		},
		'cropend.cropper': function (e) {
			console.log(e.type, e.action);
		},
		'crop.cropper': function (e) {
			console.log(e.type, e.x, e.y, e.width, e.height, e.rotate, e.scaleX, e.scaleY);
		},
		'zoom.cropper': function (e) {
			console.log(e.type, e.ratio);
		}
	}).cropper(options);


	// Buttons
	if (!$.isFunction(document.createElement('canvas').getContext)) {
		$('button[data-method="getCroppedCanvas"]').prop('disabled', true);
	}

	if (typeof document.createElement('cropper').style.transition === 'undefined') {
		$('button[data-method="rotate"]').prop('disabled', true);
		$('button[data-method="scale"]').prop('disabled', true);
	}


	// Download
	if (typeof $download[0].download === 'undefined') {
		$download.addClass('disabled');
	}


	// Options
	$('.docs-toggles').on('change', 'input', function () {
		var $this = $(this);
		var name = $this.attr('name');
		var type = $this.prop('type');
		var cropBoxData;
		var canvasData;

		if (!$image.data('cropper')) {
			return;
		}

		if (type === 'checkbox') {
			options[name] = $this.prop('checked');
			cropBoxData = $image.cropper('getCropBoxData');
			canvasData = $image.cropper('getCanvasData');

			options.built = function () {
				$image.cropper('setCropBoxData', cropBoxData);
				$image.cropper('setCanvasData', canvasData);
			};
		} else if (type === 'radio') {
			options[name] = $this.val();
		}

		$image.cropper('destroy').cropper(options);
	});


	// Methods
	$('.docs-buttons').on('click', '[data-method]', function () {
		var $this = $(this);
		var data = $this.data();
		var $target;
		var result;

		if ($this.prop('disabled') || $this.hasClass('disabled')) {
			return;
		}

		if ($image.data('cropper') && data.method) {
			data = $.extend({}, data); // Clone a new one

			if (typeof data.target !== 'undefined') {
				$target = $(data.target);

				if (typeof data.option === 'undefined') {
					try {
						data.option = JSON.parse($target.val());
					} catch (e) {
						console.log(e.message);
					}
				}
			}

			result = $image.cropper(data.method, data.option, data.secondOption);

			switch (data.method) {
				case 'scaleX':
				case 'scaleY':
					$(this).data('option', -data.option);
					break;

				case 'getCroppedCanvas':
					if (result) {

						// Bootstrap's Modal
						$('#getCroppedCanvasModal').modal().find('.modal-body').html(result);

						if (!$download.hasClass('disabled')) {
							$download.attr('href', result.toDataURL());
						}
					}

					break;
			}

			if ($.isPlainObject(result) && $target) {
				try {
					$target.val(JSON.stringify(result));
				} catch (e) {
					console.log(e.message);
				}
			}

		}
	});

	// Keyboard
	$(document.body).on('keydown', function (e) {
		if (!$image.data('cropper') || this.scrollTop > 300) {
			return;
		}

		switch (e.which) {
			case 37:
				e.preventDefault();
				$image.cropper('move', -1, 0);
				break;

			case 38:
				e.preventDefault();
				$image.cropper('move', 0, -1);
				break;

			case 39:
				e.preventDefault();
				$image.cropper('move', 1, 0);
				break;

			case 40:
				e.preventDefault();
				$image.cropper('move', 0, 1);
				break;
		}
	});

	// Import image
	var $inputImage = $('#inputImage');
	var URL = window.URL || window.webkitURL;
	var blobURL;

	if (URL) {
		$inputImage.change(function () {
			var files = this.files;
			var file;

			if (!$image.data('cropper')) {
				return;
			}

			if (files && files.length) {
				file = files[0];

				if (/^image\/\w+$/.test(file.type)) {
					blobURL = URL.createObjectURL(file);
					$image.one('built.cropper', function () {

						// Revoke when load complete
						URL.revokeObjectURL(blobURL);
					}).cropper('reset').cropper('replace', blobURL);
					$inputImage.val('');
				} else {
					window.alert('Please choose an image file.');
				}
			}
		});
	} else {
		$inputImage.prop('disabled', true).parent().addClass('disabled');
	}


};

/* CROPPER --- end */

/* KNOB */

function init_knob() {

	if (typeof ($.fn.knob) === 'undefined') { return; }
	console.log('init_knob');

	$(".knob").knob({
		change: function (value) {
			//console.log("change : " + value);
		},
		release: function (value) {
			//console.log(this.$.attr('value'));
			console.log("release : " + value);
		},
		cancel: function () {
			console.log("cancel : ", this);
		},
		/*format : function (value) {
		 return value + '%';
		 },*/
		draw: function () {

			// "tron" case
			if (this.$.data('skin') == 'tron') {

				this.cursorExt = 0.3;

				var a = this.arc(this.cv) // Arc
					,
					pa // Previous arc
					, r = 1;

				this.g.lineWidth = this.lineWidth;

				if (this.o.displayPrevious) {
					pa = this.arc(this.v);
					this.g.beginPath();
					this.g.strokeStyle = this.pColor;
					this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, pa.s, pa.e, pa.d);
					this.g.stroke();
				}

				this.g.beginPath();
				this.g.strokeStyle = r ? this.o.fgColor : this.fgColor;
				this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, a.s, a.e, a.d);
				this.g.stroke();

				this.g.lineWidth = 2;
				this.g.beginPath();
				this.g.strokeStyle = this.o.fgColor;
				this.g.arc(this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false);
				this.g.stroke();

				return false;
			}
		}

	});

	// Example of infinite knob, iPod click wheel
	var v, up = 0,
		down = 0,
		i = 0,
		$idir = $("div.idir"),
		$ival = $("div.ival"),
		incr = function () {
			i++;
			$idir.show().html("+").fadeOut();
			$ival.html(i);
		},
		decr = function () {
			i--;
			$idir.show().html("-").fadeOut();
			$ival.html(i);
		};
	$("input.infinite").knob({
		min: 0,
		max: 20,
		stopper: false,
		change: function () {
			if (v > this.cv) {
				if (up) {
					decr();
					up = 0;
				} else {
					up = 1;
					down = 0;
				}
			} else {
				if (v < this.cv) {
					if (down) {
						incr();
						down = 0;
					} else {
						down = 1;
						up = 0;
					}
				}
			}
			v = this.cv;
		}
	});

};

/* INPUT MASK */

function init_InputMask() {

	if (typeof ($.fn.inputmask) === 'undefined') { return; }
	console.log('init_InputMask');

	$(":input").inputmask();

};

/* COLOR PICKER */

function init_ColorPicker() {

	if (typeof ($.fn.colorpicker) === 'undefined') { return; }
	console.log('init_ColorPicker');

	$('.demo1').colorpicker();
	$('.demo2').colorpicker();

	$('#demo_forceformat').colorpicker({
		format: 'rgba',
		horizontal: true
	});

	$('#demo_forceformat3').colorpicker({
		format: 'rgba',
	});

	$('.demo-auto').colorpicker();

};


/* ION RANGE SLIDER */

function init_IonRangeSlider() {

	if (typeof ($.fn.ionRangeSlider) === 'undefined') { return; }
	console.log('init_IonRangeSlider');

	$("#range_27").ionRangeSlider({
		type: "double",
		min: 1000000,
		max: 2000000,
		grid: true,
		force_edges: true
	});
	$("#range").ionRangeSlider({
		hide_min_max: true,
		keyboard: true,
		min: 0,
		max: 5000,
		from: 1000,
		to: 4000,
		type: 'double',
		step: 1,
		prefix: "$",
		grid: true
	});
	$("#range_25").ionRangeSlider({
		type: "double",
		min: 1000000,
		max: 2000000,
		grid: true
	});
	$("#range_26").ionRangeSlider({
		type: "double",
		min: 0,
		max: 10000,
		step: 500,
		grid: true,
		grid_snap: true
	});
	$("#range_31").ionRangeSlider({
		type: "double",
		min: 0,
		max: 100,
		from: 30,
		to: 70,
		from_fixed: true
	});
	$(".range_min_max").ionRangeSlider({
		type: "double",
		min: 0,
		max: 100,
		from: 30,
		to: 70,
		max_interval: 50
	});
	$(".range_time24").ionRangeSlider({
		min: +moment().subtract(12, "hours").format("X"),
		max: +moment().format("X"),
		from: +moment().subtract(6, "hours").format("X"),
		grid: true,
		force_edges: true,
		prettify: function (num) {
			var m = moment(num, "X");
			return m.format("Do MMMM, HH:mm");
		}
	});

};


/* DATERANGEPICKER */

function init_daterangepicker() {

	if (typeof ($.fn.daterangepicker) === 'undefined') { return; }
	console.log('init_daterangepicker');

	var cb = function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
		$('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
	};

	var optionSet1 = {
		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: 'left',
		buttonClasses: ['btn btn-default'],
		applyClass: 'btn-small btn-primary',
		cancelClass: 'btn-small',
		format: 'MM/DD/YYYY',
		separator: ' to ',
		locale: {
			applyLabel: 'Submit',
			cancelLabel: 'Clear',
			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
		}
	};

	$('#reportrange span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY'));
	$('#reportrange').daterangepicker(optionSet1, cb);
	$('#reportrange').on('show.daterangepicker', function () {
		console.log("show event fired");
	});
	$('#reportrange').on('hide.daterangepicker', function () {
		console.log("hide event fired");
	});
	$('#reportrange').on('apply.daterangepicker', function (ev, picker) {
		console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY'));
	});
	$('#reportrange').on('cancel.daterangepicker', function (ev, picker) {
		console.log("cancel event fired");
	});
	$('#options1').click(function () {
		$('#reportrange').data('daterangepicker').setOptions(optionSet1, cb);
	});
	$('#options2').click(function () {
		$('#reportrange').data('daterangepicker').setOptions(optionSet2, cb);
	});
	$('#destroy').click(function () {
		$('#reportrange').data('daterangepicker').remove();
	});

}

function init_daterangepicker_right() {

	if (typeof ($.fn.daterangepicker) === 'undefined') { return; }
	console.log('init_daterangepicker_right');

	var cb = function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
		$('#reportrange_right span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
	};

	var optionSet1 = {
		startDate: moment().subtract(29, 'days'),
		endDate: moment(),
		minDate: '01/01/2012',
		maxDate: '12/31/2020',
		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',
		buttonClasses: ['btn btn-default'],
		applyClass: 'btn-small btn-primary',
		cancelClass: 'btn-small',
		format: 'MM/DD/YYYY',
		separator: ' to ',
		locale: {
			applyLabel: 'Submit',
			cancelLabel: 'Clear',
			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
		}
	};

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

	$('#reportrange_right').daterangepicker(optionSet1, cb);

	$('#reportrange_right').on('show.daterangepicker', function () {
		console.log("show event fired");
	});
	$('#reportrange_right').on('hide.daterangepicker', function () {
		console.log("hide event fired");
	});
	$('#reportrange_right').on('apply.daterangepicker', function (ev, picker) {
		console.log("apply event fired, start/end dates are " + picker.startDate.format('MMMM D, YYYY') + " to " + picker.endDate.format('MMMM D, YYYY'));
	});
	$('#reportrange_right').on('cancel.daterangepicker', function (ev, picker) {
		console.log("cancel event fired");
	});

	$('#options1').click(function () {
		$('#reportrange_right').data('daterangepicker').setOptions(optionSet1, cb);
	});

	$('#options2').click(function () {
		$('#reportrange_right').data('daterangepicker').setOptions(optionSet2, cb);
	});

	$('#destroy').click(function () {
		$('#reportrange_right').data('daterangepicker').remove();
	});

}

function init_daterangepicker_single_call() {

	if (typeof ($.fn.daterangepicker) === 'undefined') { return; }
	console.log('init_daterangepicker_single_call');

	$('#single_cal1').daterangepicker({
		singleDatePicker: true,
		singleClasses: "picker_1"
	}, function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
	});
	$('#single_cal2').daterangepicker({
		singleDatePicker: true,
		singleClasses: "picker_2"
	}, function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
	});
	$('#single_cal3').daterangepicker({
		singleDatePicker: true,
		singleClasses: "picker_3"
	}, function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
	});
	$('#single_cal4').daterangepicker({
		singleDatePicker: true,
		singleClasses: "picker_4"
	}, function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
	});


}


function init_daterangepicker_reservation() {

	if (typeof ($.fn.daterangepicker) === 'undefined') { return; }
	console.log('init_daterangepicker_reservation');

	$('#reservation').daterangepicker(null, function (start, end, label) {
		console.log(start.toISOString(), end.toISOString(), label);
	});

	$('#reservation-time').daterangepicker({
		timePicker: true,
		timePickerIncrement: 30,
		locale: {
			format: 'MM/DD/YYYY h:mm A'
		}
	});

}

/* SMART WIZARD */

function init_SmartWizard() {

	if (typeof ($.fn.smartWizard) === 'undefined') { return; }
	console.log('init_SmartWizard');

	$('#wizard').smartWizard();

	$('#wizard_verticle').smartWizard({
		transitionEffect: 'slide'
	});

	$('.buttonNext').addClass('btn btn-success');
	$('.buttonPrevious').addClass('btn btn-primary');
	$('.buttonFinish').addClass('btn btn-default');

};


/* VALIDATOR */

function init_validator() {

	if (typeof (validator) === 'undefined') { return; }
	console.log('init_validator');

	// initialize the validator function
	validator.message.date = 'not a real date';

	// validate a field on "blur" event, a 'select' on 'change' event & a '.reuired' classed multifield on 'keyup':
	$('form')
		.on('blur', 'input[required], input.optional, select.required', validator.checkField)
		.on('change', 'select.required', validator.checkField)
		.on('keypress', 'input[required][pattern]', validator.keypress);

	$('.multi.required').on('keyup blur', 'input', function () {
		validator.checkField.apply($(this).siblings().last()[0]);
	});

	$('form').submit(function (e) {
		e.preventDefault();
		var submit = true;

		// evaluate the form using generic validaing
		if (!validator.checkAll($(this))) {
			submit = false;
		}

		if (submit)
			this.submit();

		return false;
	});

};

/* PNotify */

function init_PNotify() {

	if (typeof (PNotify) === 'undefined') { return; }
	console.log('init_PNotify');

	new PNotify({
		title: "PNotify",
		type: "info",
		text: "Welcome. Try hovering over me. You can click things behind me, because I'm non-blocking.",
		nonblock: {
			nonblock: true
		},
		addclass: 'dark',
		styling: 'bootstrap3',
		hide: false,
		before_close: function (PNotify) {
			PNotify.update({
				title: PNotify.options.title + " - Enjoy your Stay",
				before_close: null
			});

			PNotify.queueRemove();

			return false;
		}
	});

};


/* CUSTOM NOTIFICATION */

function init_CustomNotification() {

	console.log('run_customtabs');

	if (typeof (CustomTabs) === 'undefined') { return; }
	console.log('init_CustomTabs');

	var cnt = 10;

	TabbedNotification = function (options) {
		var message = "<div id='ntf" + cnt + "' class='text alert-" + options.type + "' style='display:none'><h2><i class='fa fa-bell'></i> " + options.title +
			"</h2><div class='close'><a href='javascript:;' class='notification_close'><i class='fa fa-close'></i></a></div><p>" + options.text + "</p></div>";

		if (!document.getElementById('custom_notifications')) {
			alert('doesnt exists');
		} else {
			$('#custom_notifications ul.notifications').append("<li><a id='ntlink" + cnt + "' class='alert-" + options.type + "' href='#ntf" + cnt + "'><i class='fa fa-bell animated shake'></i></a></li>");
			$('#custom_notifications #notif-group').append(message);
			cnt++;
			CustomTabs(options);
		}
	};

	CustomTabs = function (options) {
		$('.tabbed_notifications > div').hide();
		$('.tabbed_notifications > div:first-of-type').show();
		$('#custom_notifications').removeClass('dsp_none');
		$('.notifications a').click(function (e) {
			e.preventDefault();
			var $this = $(this),
				tabbed_notifications = '#' + $this.parents('.notifications').data('tabbed_notifications'),
				others = $this.closest('li').siblings().children('a'),
				target = $this.attr('href');
			others.removeClass('active');
			$this.addClass('active');
			$(tabbed_notifications).children('div').hide();
			$(target).show();
		});
	};

	CustomTabs();

	var tabid = idname = '';

	$(document).on('click', '.notification_close', function (e) {
		idname = $(this).parent().parent().attr("id");
		tabid = idname.substr(-2);
		$('#ntf' + tabid).remove();
		$('#ntlink' + tabid).parent().remove();
		$('.notifications a').first().addClass('active');
		$('#notif-group div').first().css('display', 'block');
	});

};

/* EASYPIECHART */

function init_EasyPieChart() {

	if (typeof ($.fn.easyPieChart) === 'undefined') { return; }
	console.log('init_EasyPieChart');

	$('.chart').easyPieChart({
		easing: 'easeOutElastic',
		delay: 3000,
		barColor: '#26B99A',
		trackColor: '#fff',
		scaleColor: false,
		lineWidth: 20,
		trackWidth: 16,
		lineCap: 'butt',
		onStep: function (from, to, percent) {
			$(this.el).find('.percent').text(Math.round(percent));
		}
	});
	var chart = window.chart = $('.chart').data('easyPieChart');
	$('.js_update').on('click', function () {
		chart.update(Math.random() * 200 - 100);
	});

	//hover and retain popover when on popover content
	var originalLeave = $.fn.popover.Constructor.prototype.leave;
	$.fn.popover.Constructor.prototype.leave = function (obj) {
		var self = obj instanceof this.constructor ?
			obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type);
		var container, timeout;

		originalLeave.call(this, obj);

		if (obj.currentTarget) {
			container = $(obj.currentTarget).siblings('.popover');
			timeout = self.timeout;
			container.one('mouseenter', function () {
				//We entered the actual popover – call off the dogs
				clearTimeout(timeout);
				//Let's monitor popover content instead
				container.one('mouseleave', function () {
					$.fn.popover.Constructor.prototype.leave.call(self, self);
				});
			});
		}
	};

	$('body').popover({
		selector: '[data-popover]',
		trigger: 'click hover',
		delay: {
			show: 50,
			hide: 400
		}
	});

};


function init_charts() {

	console.log('run_charts  typeof [' + typeof (Chart) + ']');

	if (typeof (Chart) === 'undefined') { return; }

	console.log('init_charts');


	Chart.defaults.global.legend = {
		enabled: false
	};



	if ($('#canvas_line').length) {

		var canvas_line_00 = new Chart(document.getElementById("canvas_line"), {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}


	if ($('#canvas_line1').length) {

		var canvas_line_01 = new Chart(document.getElementById("canvas_line1"), {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}


	if ($('#canvas_line2').length) {

		var canvas_line_02 = new Chart(document.getElementById("canvas_line2"), {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}


	if ($('#canvas_line3').length) {

		var canvas_line_03 = new Chart(document.getElementById("canvas_line3"), {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}


	if ($('#canvas_line4').length) {

		var canvas_line_04 = new Chart(document.getElementById("canvas_line4"), {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}


	// Line chart

	if ($('#lineChart').length) {

		var ctx = document.getElementById("lineChart");
		var lineChart = new Chart(ctx, {
			type: 'line',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: "My First dataset",
					backgroundColor: "rgba(38, 185, 154, 0.31)",
					borderColor: "rgba(38, 185, 154, 0.7)",
					pointBorderColor: "rgba(38, 185, 154, 0.7)",
					pointBackgroundColor: "rgba(38, 185, 154, 0.7)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(220,220,220,1)",
					pointBorderWidth: 1,
					data: [31, 74, 6, 39, 20, 85, 7]
				}, {
					label: "My Second dataset",
					backgroundColor: "rgba(3, 88, 106, 0.3)",
					borderColor: "rgba(3, 88, 106, 0.70)",
					pointBorderColor: "rgba(3, 88, 106, 0.70)",
					pointBackgroundColor: "rgba(3, 88, 106, 0.70)",
					pointHoverBackgroundColor: "#fff",
					pointHoverBorderColor: "rgba(151,187,205,1)",
					pointBorderWidth: 1,
					data: [82, 23, 66, 9, 99, 4, 2]
				}]
			},
		});

	}

	// Bar chart

	if ($('#mybarChart').length) {

		var ctx = document.getElementById("mybarChart");
		var mybarChart = new Chart(ctx, {
			type: 'bar',
			data: {
				labels: ["January", "February", "March", "April", "May", "June", "July"],
				datasets: [{
					label: '# of Votes',
					backgroundColor: "#26B99A",
					data: [51, 30, 40, 28, 92, 50, 45]
				}, {
					label: '# of Votes',
					backgroundColor: "#03586A",
					data: [41, 56, 25, 48, 72, 34, 12]
				}]
			},

			options: {
				scales: {
					yAxes: [{
						ticks: {
							beginAtZero: true
						}
					}]
				}
			}
		});

	}


	// Doughnut chart

	if ($('#canvasDoughnut').length) {

		var ctx = document.getElementById("canvasDoughnut");
		var data = {
			labels: [
				"Dark Grey",
				"Purple Color",
				"Gray Color",
				"Green Color",
				"Blue Color"
			],
			datasets: [{
				data: [120, 50, 140, 180, 100],
				backgroundColor: [
					"#455C73",
					"#9B59B6",
					"#BDC3C7",
					"#26B99A",
					"#3498DB"
				],
				hoverBackgroundColor: [
					"#34495E",
					"#B370CF",
					"#CFD4D8",
					"#36CAAB",
					"#49A9EA"
				]

			}]
		};

		var canvasDoughnut = new Chart(ctx, {
			type: 'doughnut',
			tooltipFillColor: "rgba(51, 51, 51, 0.55)",
			data: data
		});

	}

	// Radar chart

	if ($('#canvasRadar').length) {

		var ctx = document.getElementById("canvasRadar");
		var data = {
			labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
			datasets: [{
				label: "My First dataset",
				backgroundColor: "rgba(3, 88, 106, 0.2)",
				borderColor: "rgba(3, 88, 106, 0.80)",
				pointBorderColor: "rgba(3, 88, 106, 0.80)",
				pointBackgroundColor: "rgba(3, 88, 106, 0.80)",
				pointHoverBackgroundColor: "#fff",
				pointHoverBorderColor: "rgba(220,220,220,1)",
				data: [65, 59, 90, 81, 56, 55, 40]
			}, {
				label: "My Second dataset",
				backgroundColor: "rgba(38, 185, 154, 0.2)",
				borderColor: "rgba(38, 185, 154, 0.85)",
				pointColor: "rgba(38, 185, 154, 0.85)",
				pointStrokeColor: "#fff",
				pointHighlightFill: "#fff",
				pointHighlightStroke: "rgba(151,187,205,1)",
				data: [28, 48, 40, 19, 96, 27, 100]
			}]
		};

		var canvasRadar = new Chart(ctx, {
			type: 'radar',
			data: data,
		});

	}


	// Pie chart
	if ($('#pieChart').length) {

		var ctx = document.getElementById("pieChart");
		var data = {
			datasets: [{
				data: [120, 50, 140, 180, 100],
				backgroundColor: [
					"#455C73",
					"#9B59B6",
					"#BDC3C7",
					"#26B99A",
					"#3498DB"
				],
				label: 'My dataset' // for legend
			}],
			labels: [
				"Dark Gray",
				"Purple",
				"Gray",
				"Green",
				"Blue"
			]
		};

		var pieChart = new Chart(ctx, {
			data: data,
			type: 'pie',
			otpions: {
				legend: false
			}
		});

	}


	// PolarArea chart

	if ($('#polarArea').length) {

		var ctx = document.getElementById("polarArea");
		var data = {
			datasets: [{
				data: [120, 50, 140, 180, 100],
				backgroundColor: [
					"#455C73",
					"#9B59B6",
					"#BDC3C7",
					"#26B99A",
					"#3498DB"
				],
				label: 'My dataset'
			}],
			labels: [
				"Dark Gray",
				"Purple",
				"Gray",
				"Green",
				"Blue"
			]
		};

		var polarArea = new Chart(ctx, {
			data: data,
			type: 'polarArea',
			options: {
				scale: {
					ticks: {
						beginAtZero: true
					}
				}
			}
		});

	}
}

/* COMPOSE */

function init_compose() {

	if (typeof ($.fn.slideToggle) === 'undefined') { return; }
	console.log('init_compose');

	$('#compose, .compose-close').click(function () {
		$('.compose').slideToggle();
	});

};

/* CALENDAR */

function init_calendar() {

	if (typeof ($.fn.fullCalendar) === 'undefined') { return; }
	console.log('init_calendar');

	var date = new Date(),
		d = date.getDate(),
		m = date.getMonth(),
		y = date.getFullYear(),
		started,
		categoryClass;

	var calendar = $('#calendar').fullCalendar({
		header: {
			left: 'prev,next today',
			center: 'title',
			right: 'month,agendaWeek,agendaDay,listMonth'
		},
		selectable: true,
		selectHelper: true,
		select: function (start, end, allDay) {
			$('#fc_create').click();

			started = start;
			ended = end;

			$(".antosubmit").on("click", function () {
				var title = $("#title").val();
				if (end) {
					ended = end;
				}

				categoryClass = $("#event_type").val();

				if (title) {
					calendar.fullCalendar('renderEvent', {
						title: title,
						start: started,
						end: end,
						allDay: allDay
					},
						true // make the event "stick"
					);
				}

				$('#title').val('');

				calendar.fullCalendar('unselect');

				$('.antoclose').click();

				return false;
			});
		},
		eventClick: function (calEvent, jsEvent, view) {
			$('#fc_edit').click();
			$('#title2').val(calEvent.title);

			categoryClass = $("#event_type").val();

			$(".antosubmit2").on("click", function () {
				calEvent.title = $("#title2").val();

				calendar.fullCalendar('updateEvent', calEvent);
				$('.antoclose2').click();
			});

			calendar.fullCalendar('unselect');
		},
		editable: true,
		events: [{
			title: 'All Day Event',
			start: new Date(y, m, 1)
		}, {
			title: 'Long Event',
			start: new Date(y, m, d - 5),
			end: new Date(y, m, d - 2)
		}, {
			title: 'Meeting',
			start: new Date(y, m, d, 10, 30),
			allDay: false
		}, {
			title: 'Lunch',
			start: new Date(y, m, d + 14, 12, 0),
			end: new Date(y, m, d, 14, 0),
			allDay: false
		}, {
			title: 'Birthday Party',
			start: new Date(y, m, d + 1, 19, 0),
			end: new Date(y, m, d + 1, 22, 30),
			allDay: false
		}, {
			title: 'Click for Google',
			start: new Date(y, m, 28),
			end: new Date(y, m, 29),
			url: 'http://google.com/'
		}]
	});

};

/* DATA TABLES */

function init_DataTables() {

	console.log('run_datatables');

	if (typeof ($.fn.DataTable) === 'undefined') { return; }
	console.log('init_DataTables');

	var handleDataTableButtons = function () {
		if ($("#datatable-buttons").length) {
			$("#datatable-buttons").DataTable({
				dom: "Bfrtip",
				buttons: [
					{
						extend: "copy",
						className: "btn-sm"
					},
					{
						extend: "csv",
						className: "btn-sm"
					},
					{
						extend: "excel",
						className: "btn-sm"
					},
					{
						extend: "pdfHtml5",
						className: "btn-sm"
					},
					{
						extend: "print",
						className: "btn-sm"
					},
				],
				responsive: true
			});
		}
	};

	TableManageButtons = function () {
		"use strict";
		return {
			init: function () {
				handleDataTableButtons();
			}
		};
	}();

	$('#datatable').dataTable();

	$('#datatable-keytable').DataTable({
		keys: true
	});

	$('#datatable-responsive').DataTable();

	$('#datatable-scroller').DataTable({
		ajax: "js/datatables/json/scroller-demo.json",
		deferRender: true,
		scrollY: 380,
		scrollCollapse: true,
		scroller: true
	});

	$('#datatable-fixed-header').DataTable({
		fixedHeader: true
	});

	var $datatable = $('#datatable-checkbox');

	$datatable.dataTable({
		'order': [[1, 'asc']],
		'columnDefs': [
			{ orderable: false, targets: [0] }
		]
	});
	$datatable.on('draw.dt', function () {
		$('checkbox input').iCheck({
			checkboxClass: 'icheckbox_flat-green'
		});
	});

	TableManageButtons.init();

};

/* CHART - MORRIS  */

function init_morris_charts() {

	if (typeof (Morris) === 'undefined') { return; }
	console.log('init_morris_charts');

	if ($('#graph_bar').length) {

		Morris.Bar({
			element: 'graph_bar',
			data: [
				{ device: 'iPhone 4', geekbench: 380 },
				{ device: 'iPhone 4S', geekbench: 655 },
				{ device: 'iPhone 3GS', geekbench: 275 },
				{ device: 'iPhone 5', geekbench: 1571 },
				{ device: 'iPhone 5S', geekbench: 655 },
				{ device: 'iPhone 6', geekbench: 2154 },
				{ device: 'iPhone 6 Plus', geekbench: 1144 },
				{ device: 'iPhone 6S', geekbench: 2371 },
				{ device: 'iPhone 6S Plus', geekbench: 1471 },
				{ device: 'Other', geekbench: 1371 }
			],
			xkey: 'device',
			ykeys: ['geekbench'],
			labels: ['Geekbench'],
			barRatio: 0.4,
			barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			xLabelAngle: 35,
			hideHover: 'auto',
			resize: true
		});

	}

	if ($('#graph_bar_group').length) {

		Morris.Bar({
			element: 'graph_bar_group',
			data: [
				{ "period": "2016-10-01", "licensed": 807, "sorned": 660 },
				{ "period": "2016-09-30", "licensed": 1251, "sorned": 729 },
				{ "period": "2016-09-29", "licensed": 1769, "sorned": 1018 },
				{ "period": "2016-09-20", "licensed": 2246, "sorned": 1461 },
				{ "period": "2016-09-19", "licensed": 2657, "sorned": 1967 },
				{ "period": "2016-09-18", "licensed": 3148, "sorned": 2627 },
				{ "period": "2016-09-17", "licensed": 3471, "sorned": 3740 },
				{ "period": "2016-09-16", "licensed": 2871, "sorned": 2216 },
				{ "period": "2016-09-15", "licensed": 2401, "sorned": 1656 },
				{ "period": "2016-09-10", "licensed": 2115, "sorned": 1022 }
			],
			xkey: 'period',
			barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			ykeys: ['licensed', 'sorned'],
			labels: ['Licensed', 'SORN'],
			hideHover: 'auto',
			xLabelAngle: 60,
			resize: true
		});

	}

	if ($('#graphx').length) {

		Morris.Bar({
			element: 'graphx',
			data: [
				{ x: '2015 Q1', y: 2, z: 3, a: 4 },
				{ x: '2015 Q2', y: 3, z: 5, a: 6 },
				{ x: '2015 Q3', y: 4, z: 3, a: 2 },
				{ x: '2015 Q4', y: 2, z: 4, a: 5 }
			],
			xkey: 'x',
			ykeys: ['y', 'z', 'a'],
			barColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			hideHover: 'auto',
			labels: ['Y', 'Z', 'A'],
			resize: true
		}).on('click', function (i, row) {
			console.log(i, row);
		});

	}

	if ($('#graph_area').length) {

		Morris.Area({
			element: 'graph_area',
			data: [
				{ period: '2014 Q1', iphone: 2666, ipad: null, itouch: 2647 },
				{ period: '2014 Q2', iphone: 2778, ipad: 2294, itouch: 2441 },
				{ period: '2014 Q3', iphone: 4912, ipad: 1969, itouch: 2501 },
				{ period: '2014 Q4', iphone: 3767, ipad: 3597, itouch: 5689 },
				{ period: '2015 Q1', iphone: 6810, ipad: 1914, itouch: 2293 },
				{ period: '2015 Q2', iphone: 5670, ipad: 4293, itouch: 1881 },
				{ period: '2015 Q3', iphone: 4820, ipad: 3795, itouch: 1588 },
				{ period: '2015 Q4', iphone: 15073, ipad: 5967, itouch: 5175 },
				{ period: '2016 Q1', iphone: 10687, ipad: 4460, itouch: 2028 },
				{ period: '2016 Q2', iphone: 8432, ipad: 5713, itouch: 1791 }
			],
			xkey: 'period',
			ykeys: ['iphone', 'ipad', 'itouch'],
			lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			labels: ['iPhone', 'iPad', 'iPod Touch'],
			pointSize: 2,
			hideHover: 'auto',
			resize: true
		});

	}

	if ($('#graph_donut').length) {

		Morris.Donut({
			element: 'graph_donut',
			data: [
				{ label: 'Jam', value: 25 },
				{ label: 'Frosted', value: 40 },
				{ label: 'Custard', value: 25 },
				{ label: 'Sugar', value: 10 }
			],
			colors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			formatter: function (y) {
				return y + "%";
			},
			resize: true
		});

	}

	if ($('#graph_line').length) {

		Morris.Line({
			element: 'graph_line',
			xkey: 'year',
			ykeys: ['value'],
			labels: ['Value'],
			hideHover: 'auto',
			lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
			data: [
				{ year: '2012', value: 20 },
				{ year: '2013', value: 10 },
				{ year: '2014', value: 5 },
				{ year: '2015', value: 5 },
				{ year: '2016', value: 20 }
			],
			resize: true
		});

		$MENU_TOGGLE.on('click', function () {
			$(window).resize();
		});

	}

};



/* ECHRTS */


function init_echarts() {

	if (typeof (echarts) === 'undefined') { return; }
	console.log('init_echarts');


	var theme = {
		color: [
			'#26B99A', '#34495E', '#BDC3C7', '#3498DB',
			'#9B59B6', '#8abb6f', '#759c6a', '#bfd3b7'
		],

		title: {
			itemGap: 8,
			textStyle: {
				fontWeight: 'normal',
				color: '#408829'
			}
		},

		dataRange: {
			color: ['#1f610a', '#97b58d']
		},

		toolbox: {
			color: ['#408829', '#408829', '#408829', '#408829']
		},

		tooltip: {
			backgroundColor: 'rgba(0,0,0,0.5)',
			axisPointer: {
				type: 'line',
				lineStyle: {
					color: '#408829',
					type: 'dashed'
				},
				crossStyle: {
					color: '#408829'
				},
				shadowStyle: {
					color: 'rgba(200,200,200,0.3)'
				}
			}
		},

		dataZoom: {
			dataBackgroundColor: '#eee',
			fillerColor: 'rgba(64,136,41,0.2)',
			handleColor: '#408829'
		},
		grid: {
			borderWidth: 0
		},

		categoryAxis: {
			axisLine: {
				lineStyle: {
					color: '#408829'
				}
			},
			splitLine: {
				lineStyle: {
					color: ['#eee']
				}
			}
		},

		valueAxis: {
			axisLine: {
				lineStyle: {
					color: '#408829'
				}
			},
			splitArea: {
				show: true,
				areaStyle: {
					color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)']
				}
			},
			splitLine: {
				lineStyle: {
					color: ['#eee']
				}
			}
		},
		timeline: {
			lineStyle: {
				color: '#408829'
			},
			controlStyle: {
				normal: { color: '#408829' },
				emphasis: { color: '#408829' }
			}
		},

		k: {
			itemStyle: {
				normal: {
					color: '#68a54a',
					color0: '#a9cba2',
					lineStyle: {
						width: 1,
						color: '#408829',
						color0: '#86b379'
					}
				}
			}
		},
		map: {
			itemStyle: {
				normal: {
					areaStyle: {
						color: '#ddd'
					},
					label: {
						textStyle: {
							color: '#c12e34'
						}
					}
				},
				emphasis: {
					areaStyle: {
						color: '#99d2dd'
					},
					label: {
						textStyle: {
							color: '#c12e34'
						}
					}
				}
			}
		},
		force: {
			itemStyle: {
				normal: {
					linkStyle: {
						strokeColor: '#408829'
					}
				}
			}
		},
		chord: {
			padding: 4,
			itemStyle: {
				normal: {
					lineStyle: {
						width: 1,
						color: 'rgba(128, 128, 128, 0.5)'
					},
					chordStyle: {
						lineStyle: {
							width: 1,
							color: 'rgba(128, 128, 128, 0.5)'
						}
					}
				},
				emphasis: {
					lineStyle: {
						width: 1,
						color: 'rgba(128, 128, 128, 0.5)'
					},
					chordStyle: {
						lineStyle: {
							width: 1,
							color: 'rgba(128, 128, 128, 0.5)'
						}
					}
				}
			}
		},
		gauge: {
			startAngle: 225,
			endAngle: -45,
			axisLine: {
				show: true,
				lineStyle: {
					color: [[0.2, '#86b379'], [0.8, '#68a54a'], [1, '#408829']],
					width: 8
				}
			},
			axisTick: {
				splitNumber: 10,
				length: 12,
				lineStyle: {
					color: 'auto'
				}
			},
			axisLabel: {
				textStyle: {
					color: 'auto'
				}
			},
			splitLine: {
				length: 18,
				lineStyle: {
					color: 'auto'
				}
			},
			pointer: {
				length: '90%',
				color: 'auto'
			},
			title: {
				textStyle: {
					color: '#333'
				}
			},
			detail: {
				textStyle: {
					color: 'auto'
				}
			}
		},
		textStyle: {
			fontFamily: 'Arial, Verdana, sans-serif'
		}
	};


	//echart Bar

	if ($('#mainb').length) {

		var echartBar = echarts.init(document.getElementById('mainb'), theme);

		echartBar.setOption({
			title: {
				text: 'Graph title',
				subtext: 'Graph Sub-text'
			},
			tooltip: {
				trigger: 'axis'
			},
			legend: {
				data: ['sales', 'purchases']
			},
			toolbox: {
				show: false
			},
			calculable: false,
			xAxis: [{
				type: 'category',
				data: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?']
			}],
			yAxis: [{
				type: 'value'
			}],
			series: [{
				name: 'sales',
				type: 'bar',
				data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
				markPoint: {
					data: [{
						type: 'max',
						name: '???'
					}, {
						type: 'min',
						name: '???'
					}]
				},
				markLine: {
					data: [{
						type: 'average',
						name: '???'
					}]
				}
			}, {
				name: 'purchases',
				type: 'bar',
				data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
				markPoint: {
					data: [{
						name: 'sales',
						value: 182.2,
						xAxis: 7,
						yAxis: 183,
					}, {
						name: 'purchases',
						value: 2.3,
						xAxis: 11,
						yAxis: 3
					}]
				},
				markLine: {
					data: [{
						type: 'average',
						name: '???'
					}]
				}
			}]
		});

	}




	//echart Radar

	if ($('#echart_sonar').length) {

		var echartRadar = echarts.init(document.getElementById('echart_sonar'), theme);

		echartRadar.setOption({
			title: {
				text: 'Budget vs spending',
				subtext: 'Subtitle'
			},
			tooltip: {
				trigger: 'item'
			},
			legend: {
				orient: 'vertical',
				x: 'right',
				y: 'bottom',
				data: ['Allocated Budget', 'Actual Spending']
			},
			toolbox: {
				show: true,
				feature: {
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			polar: [{
				indicator: [{
					text: 'Sales',
					max: 6000
				}, {
					text: 'Administration',
					max: 16000
				}, {
					text: 'Information Techology',
					max: 30000
				}, {
					text: 'Customer Support',
					max: 38000
				}, {
					text: 'Development',
					max: 52000
				}, {
					text: 'Marketing',
					max: 25000
				}]
			}],
			calculable: true,
			series: [{
				name: 'Budget vs spending',
				type: 'radar',
				data: [{
					value: [4300, 10000, 28000, 35000, 50000, 19000],
					name: 'Allocated Budget'
				}, {
					value: [5000, 14000, 28000, 31000, 42000, 21000],
					name: 'Actual Spending'
				}]
			}]
		});

	}

	//echart Funnel

	if ($('#echart_pyramid').length) {

		var echartFunnel = echarts.init(document.getElementById('echart_pyramid'), theme);

		echartFunnel.setOption({
			title: {
				text: 'Echart Pyramid Graph',
				subtext: 'Subtitle'
			},
			tooltip: {
				trigger: 'item',
				formatter: "{a} <br/>{b} : {c}%"
			},
			toolbox: {
				show: true,
				feature: {
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			legend: {
				data: ['Something #1', 'Something #2', 'Something #3', 'Something #4', 'Something #5'],
				orient: 'vertical',
				x: 'left',
				y: 'bottom'
			},
			calculable: true,
			series: [{
				name: '漏斗图',
				type: 'funnel',
				width: '40%',
				data: [{
					value: 60,
					name: 'Something #1'
				}, {
					value: 40,
					name: 'Something #2'
				}, {
					value: 20,
					name: 'Something #3'
				}, {
					value: 80,
					name: 'Something #4'
				}, {
					value: 100,
					name: 'Something #5'
				}]
			}]
		});

	}

	//echart Gauge

	if ($('#echart_gauge').length) {

		var echartGauge = echarts.init(document.getElementById('echart_gauge'), theme);

		echartGauge.setOption({
			tooltip: {
				formatter: "{a} <br/>{b} : {c}%"
			},
			toolbox: {
				show: true,
				feature: {
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			series: [{
				name: 'Performance',
				type: 'gauge',
				center: ['50%', '50%'],
				startAngle: 140,
				endAngle: -140,
				min: 0,
				max: 100,
				precision: 0,
				splitNumber: 10,
				axisLine: {
					show: true,
					lineStyle: {
						color: [
							[0.2, 'lightgreen'],
							[0.4, 'orange'],
							[0.8, 'skyblue'],
							[1, '#ff4500']
						],
						width: 30
					}
				},
				axisTick: {
					show: true,
					splitNumber: 5,
					length: 8,
					lineStyle: {
						color: '#eee',
						width: 1,
						type: 'solid'
					}
				},
				axisLabel: {
					show: true,
					formatter: function (v) {
						switch (v + '') {
							case '10':
								return 'a';
							case '30':
								return 'b';
							case '60':
								return 'c';
							case '90':
								return 'd';
							default:
								return '';
						}
					},
					textStyle: {
						color: '#333'
					}
				},
				splitLine: {
					show: true,
					length: 30,
					lineStyle: {
						color: '#eee',
						width: 2,
						type: 'solid'
					}
				},
				pointer: {
					length: '80%',
					width: 8,
					color: 'auto'
				},
				title: {
					show: true,
					offsetCenter: ['-65%', -10],
					textStyle: {
						color: '#333',
						fontSize: 15
					}
				},
				detail: {
					show: true,
					backgroundColor: 'rgba(0,0,0,0)',
					borderWidth: 0,
					borderColor: '#ccc',
					width: 100,
					height: 40,
					offsetCenter: ['-60%', 10],
					formatter: '{value}%',
					textStyle: {
						color: 'auto',
						fontSize: 30
					}
				},
				data: [{
					value: 50,
					name: 'Performance'
				}]
			}]
		});

	}

	//echart Line

	if ($('#echart_line').length) {

		var echartLine = echarts.init(document.getElementById('echart_line'), theme);

		echartLine.setOption({
			title: {
				text: 'Line Graph',
				subtext: 'Subtitle'
			},
			tooltip: {
				trigger: 'axis'
			},
			legend: {
				x: 220,
				y: 40,
				data: ['Intent', 'Pre-order', 'Deal']
			},
			toolbox: {
				show: true,
				feature: {
					magicType: {
						show: true,
						title: {
							line: 'Line',
							bar: 'Bar',
							stack: 'Stack',
							tiled: 'Tiled'
						},
						type: ['line', 'bar', 'stack', 'tiled']
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			calculable: true,
			xAxis: [{
				type: 'category',
				boundaryGap: false,
				data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
			}],
			yAxis: [{
				type: 'value'
			}],
			series: [{
				name: 'Deal',
				type: 'line',
				smooth: true,
				itemStyle: {
					normal: {
						areaStyle: {
							type: 'default'
						}
					}
				},
				data: [10, 12, 21, 54, 260, 830, 710]
			}, {
				name: 'Pre-order',
				type: 'line',
				smooth: true,
				itemStyle: {
					normal: {
						areaStyle: {
							type: 'default'
						}
					}
				},
				data: [30, 182, 434, 791, 390, 30, 10]
			}, {
				name: 'Intent',
				type: 'line',
				smooth: true,
				itemStyle: {
					normal: {
						areaStyle: {
							type: 'default'
						}
					}
				},
				data: [1320, 1132, 601, 234, 120, 90, 20]
			}]
		});

	}

	//echart Scatter

	if ($('#echart_scatter').length) {

		var echartScatter = echarts.init(document.getElementById('echart_scatter'), theme);

		echartScatter.setOption({
			title: {
				text: 'Scatter Graph',
				subtext: 'Heinz  2003'
			},
			tooltip: {
				trigger: 'axis',
				showDelay: 0,
				axisPointer: {
					type: 'cross',
					lineStyle: {
						type: 'dashed',
						width: 1
					}
				}
			},
			legend: {
				data: ['Data2', 'Data1']
			},
			toolbox: {
				show: true,
				feature: {
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			xAxis: [{
				type: 'value',
				scale: true,
				axisLabel: {
					formatter: '{value} cm'
				}
			}],
			yAxis: [{
				type: 'value',
				scale: true,
				axisLabel: {
					formatter: '{value} kg'
				}
			}],
			series: [{
				name: 'Data1',
				type: 'scatter',
				tooltip: {
					trigger: 'item',
					formatter: function (params) {
						if (params.value.length > 1) {
							return params.seriesName + ' :<br/>' + params.value[0] + 'cm ' + params.value[1] + 'kg ';
						} else {
							return params.seriesName + ' :<br/>' + params.name + ' : ' + params.value + 'kg ';
						}
					}
				},
				data: [
					[161.2, 51.6],
					[167.5, 59.0],
					[159.5, 49.2],
					[157.0, 63.0],
					[155.8, 53.6],
					[170.0, 59.0],
					[159.1, 47.6],
					[166.0, 69.8],
					[176.2, 66.8],
					[160.2, 75.2],
					[172.5, 55.2],
					[170.9, 54.2],
					[172.9, 62.5],
					[153.4, 42.0],
					[160.0, 50.0],
					[147.2, 49.8],
					[168.2, 49.2],
					[175.0, 73.2],
					[157.0, 47.8],
					[167.6, 68.8],
					[159.5, 50.6],
					[175.0, 82.5],
					[166.8, 57.2],
					[176.5, 87.8],
					[170.2, 72.8],
					[174.0, 54.5],
					[173.0, 59.8],
					[179.9, 67.3],
					[170.5, 67.8],
					[160.0, 47.0],
					[154.4, 46.2],
					[162.0, 55.0],
					[176.5, 83.0],
					[160.0, 54.4],
					[152.0, 45.8],
					[162.1, 53.6],
					[170.0, 73.2],
					[160.2, 52.1],
					[161.3, 67.9],
					[166.4, 56.6],
					[168.9, 62.3],
					[163.8, 58.5],
					[167.6, 54.5],
					[160.0, 50.2],
					[161.3, 60.3],
					[167.6, 58.3],
					[165.1, 56.2],
					[160.0, 50.2],
					[170.0, 72.9],
					[157.5, 59.8],
					[167.6, 61.0],
					[160.7, 69.1],
					[163.2, 55.9],
					[152.4, 46.5],
					[157.5, 54.3],
					[168.3, 54.8],
					[180.3, 60.7],
					[165.5, 60.0],
					[165.0, 62.0],
					[164.5, 60.3],
					[156.0, 52.7],
					[160.0, 74.3],
					[163.0, 62.0],
					[165.7, 73.1],
					[161.0, 80.0],
					[162.0, 54.7],
					[166.0, 53.2],
					[174.0, 75.7],
					[172.7, 61.1],
					[167.6, 55.7],
					[151.1, 48.7],
					[164.5, 52.3],
					[163.5, 50.0],
					[152.0, 59.3],
					[169.0, 62.5],
					[164.0, 55.7],
					[161.2, 54.8],
					[155.0, 45.9],
					[170.0, 70.6],
					[176.2, 67.2],
					[170.0, 69.4],
					[162.5, 58.2],
					[170.3, 64.8],
					[164.1, 71.6],
					[169.5, 52.8],
					[163.2, 59.8],
					[154.5, 49.0],
					[159.8, 50.0],
					[173.2, 69.2],
					[170.0, 55.9],
					[161.4, 63.4],
					[169.0, 58.2],
					[166.2, 58.6],
					[159.4, 45.7],
					[162.5, 52.2],
					[159.0, 48.6],
					[162.8, 57.8],
					[159.0, 55.6],
					[179.8, 66.8],
					[162.9, 59.4],
					[161.0, 53.6],
					[151.1, 73.2],
					[168.2, 53.4],
					[168.9, 69.0],
					[173.2, 58.4],
					[171.8, 56.2],
					[178.0, 70.6],
					[164.3, 59.8],
					[163.0, 72.0],
					[168.5, 65.2],
					[166.8, 56.6],
					[172.7, 105.2],
					[163.5, 51.8],
					[169.4, 63.4],
					[167.8, 59.0],
					[159.5, 47.6],
					[167.6, 63.0],
					[161.2, 55.2],
					[160.0, 45.0],
					[163.2, 54.0],
					[162.2, 50.2],
					[161.3, 60.2],
					[149.5, 44.8],
					[157.5, 58.8],
					[163.2, 56.4],
					[172.7, 62.0],
					[155.0, 49.2],
					[156.5, 67.2],
					[164.0, 53.8],
					[160.9, 54.4],
					[162.8, 58.0],
					[167.0, 59.8],
					[160.0, 54.8],
					[160.0, 43.2],
					[168.9, 60.5],
					[158.2, 46.4],
					[156.0, 64.4],
					[160.0, 48.8],
					[167.1, 62.2],
					[158.0, 55.5],
					[167.6, 57.8],
					[156.0, 54.6],
					[162.1, 59.2],
					[173.4, 52.7],
					[159.8, 53.2],
					[170.5, 64.5],
					[159.2, 51.8],
					[157.5, 56.0],
					[161.3, 63.6],
					[162.6, 63.2],
					[160.0, 59.5],
					[168.9, 56.8],
					[165.1, 64.1],
					[162.6, 50.0],
					[165.1, 72.3],
					[166.4, 55.0],
					[160.0, 55.9],
					[152.4, 60.4],
					[170.2, 69.1],
					[162.6, 84.5],
					[170.2, 55.9],
					[158.8, 55.5],
					[172.7, 69.5],
					[167.6, 76.4],
					[162.6, 61.4],
					[167.6, 65.9],
					[156.2, 58.6],
					[175.2, 66.8],
					[172.1, 56.6],
					[162.6, 58.6],
					[160.0, 55.9],
					[165.1, 59.1],
					[182.9, 81.8],
					[166.4, 70.7],
					[165.1, 56.8],
					[177.8, 60.0],
					[165.1, 58.2],
					[175.3, 72.7],
					[154.9, 54.1],
					[158.8, 49.1],
					[172.7, 75.9],
					[168.9, 55.0],
					[161.3, 57.3],
					[167.6, 55.0],
					[165.1, 65.5],
					[175.3, 65.5],
					[157.5, 48.6],
					[163.8, 58.6],
					[167.6, 63.6],
					[165.1, 55.2],
					[165.1, 62.7],
					[168.9, 56.6],
					[162.6, 53.9],
					[164.5, 63.2],
					[176.5, 73.6],
					[168.9, 62.0],
					[175.3, 63.6],
					[159.4, 53.2],
					[160.0, 53.4],
					[170.2, 55.0],
					[162.6, 70.5],
					[167.6, 54.5],
					[162.6, 54.5],
					[160.7, 55.9],
					[160.0, 59.0],
					[157.5, 63.6],
					[162.6, 54.5],
					[152.4, 47.3],
					[170.2, 67.7],
					[165.1, 80.9],
					[172.7, 70.5],
					[165.1, 60.9],
					[170.2, 63.6],
					[170.2, 54.5],
					[170.2, 59.1],
					[161.3, 70.5],
					[167.6, 52.7],
					[167.6, 62.7],
					[165.1, 86.3],
					[162.6, 66.4],
					[152.4, 67.3],
					[168.9, 63.0],
					[170.2, 73.6],
					[175.2, 62.3],
					[175.2, 57.7],
					[160.0, 55.4],
					[165.1, 104.1],
					[174.0, 55.5],
					[170.2, 77.3],
					[160.0, 80.5],
					[167.6, 64.5],
					[167.6, 72.3],
					[167.6, 61.4],
					[154.9, 58.2],
					[162.6, 81.8],
					[175.3, 63.6],
					[171.4, 53.4],
					[157.5, 54.5],
					[165.1, 53.6],
					[160.0, 60.0],
					[174.0, 73.6],
					[162.6, 61.4],
					[174.0, 55.5],
					[162.6, 63.6],
					[161.3, 60.9],
					[156.2, 60.0],
					[149.9, 46.8],
					[169.5, 57.3],
					[160.0, 64.1],
					[175.3, 63.6],
					[169.5, 67.3],
					[160.0, 75.5],
					[172.7, 68.2],
					[162.6, 61.4],
					[157.5, 76.8],
					[176.5, 71.8],
					[164.4, 55.5],
					[160.7, 48.6],
					[174.0, 66.4],
					[163.8, 67.3]
				],
				markPoint: {
					data: [{
						type: 'max',
						name: 'Max'
					}, {
						type: 'min',
						name: 'Min'
					}]
				},
				markLine: {
					data: [{
						type: 'average',
						name: 'Mean'
					}]
				}
			}, {
				name: 'Data2',
				type: 'scatter',
				tooltip: {
					trigger: 'item',
					formatter: function (params) {
						if (params.value.length > 1) {
							return params.seriesName + ' :<br/>' + params.value[0] + 'cm ' + params.value[1] + 'kg ';
						} else {
							return params.seriesName + ' :<br/>' + params.name + ' : ' + params.value + 'kg ';
						}
					}
				},
				data: [
					[174.0, 65.6],
					[175.3, 71.8],
					[193.5, 80.7],
					[186.5, 72.6],
					[187.2, 78.8],
					[181.5, 74.8],
					[184.0, 86.4],
					[184.5, 78.4],
					[175.0, 62.0],
					[184.0, 81.6],
					[180.0, 76.6],
					[177.8, 83.6],
					[192.0, 90.0],
					[176.0, 74.6],
					[174.0, 71.0],
					[184.0, 79.6],
					[192.7, 93.8],
					[171.5, 70.0],
					[173.0, 72.4],
					[176.0, 85.9],
					[176.0, 78.8],
					[180.5, 77.8],
					[172.7, 66.2],
					[176.0, 86.4],
					[173.5, 81.8],
					[178.0, 89.6],
					[180.3, 82.8],
					[180.3, 76.4],
					[164.5, 63.2],
					[173.0, 60.9],
					[183.5, 74.8],
					[175.5, 70.0],
					[188.0, 72.4],
					[189.2, 84.1],
					[172.8, 69.1],
					[170.0, 59.5],
					[182.0, 67.2],
					[170.0, 61.3],
					[177.8, 68.6],
					[184.2, 80.1],
					[186.7, 87.8],
					[171.4, 84.7],
					[172.7, 73.4],
					[175.3, 72.1],
					[180.3, 82.6],
					[182.9, 88.7],
					[188.0, 84.1],
					[177.2, 94.1],
					[172.1, 74.9],
					[167.0, 59.1],
					[169.5, 75.6],
					[174.0, 86.2],
					[172.7, 75.3],
					[182.2, 87.1],
					[164.1, 55.2],
					[163.0, 57.0],
					[171.5, 61.4],
					[184.2, 76.8],
					[174.0, 86.8],
					[174.0, 72.2],
					[177.0, 71.6],
					[186.0, 84.8],
					[167.0, 68.2],
					[171.8, 66.1],
					[182.0, 72.0],
					[167.0, 64.6],
					[177.8, 74.8],
					[164.5, 70.0],
					[192.0, 101.6],
					[175.5, 63.2],
					[171.2, 79.1],
					[181.6, 78.9],
					[167.4, 67.7],
					[181.1, 66.0],
					[177.0, 68.2],
					[174.5, 63.9],
					[177.5, 72.0],
					[170.5, 56.8],
					[182.4, 74.5],
					[197.1, 90.9],
					[180.1, 93.0],
					[175.5, 80.9],
					[180.6, 72.7],
					[184.4, 68.0],
					[175.5, 70.9],
					[180.6, 72.5],
					[177.0, 72.5],
					[177.1, 83.4],
					[181.6, 75.5],
					[176.5, 73.0],
					[175.0, 70.2],
					[174.0, 73.4],
					[165.1, 70.5],
					[177.0, 68.9],
					[192.0, 102.3],
					[176.5, 68.4],
					[169.4, 65.9],
					[182.1, 75.7],
					[179.8, 84.5],
					[175.3, 87.7],
					[184.9, 86.4],
					[177.3, 73.2],
					[167.4, 53.9],
					[178.1, 72.0],
					[168.9, 55.5],
					[157.2, 58.4],
					[180.3, 83.2],
					[170.2, 72.7],
					[177.8, 64.1],
					[172.7, 72.3],
					[165.1, 65.0],
					[186.7, 86.4],
					[165.1, 65.0],
					[174.0, 88.6],
					[175.3, 84.1],
					[185.4, 66.8],
					[177.8, 75.5],
					[180.3, 93.2],
					[180.3, 82.7],
					[177.8, 58.0],
					[177.8, 79.5],
					[177.8, 78.6],
					[177.8, 71.8],
					[177.8, 116.4],
					[163.8, 72.2],
					[188.0, 83.6],
					[198.1, 85.5],
					[175.3, 90.9],
					[166.4, 85.9],
					[190.5, 89.1],
					[166.4, 75.0],
					[177.8, 77.7],
					[179.7, 86.4],
					[172.7, 90.9],
					[190.5, 73.6],
					[185.4, 76.4],
					[168.9, 69.1],
					[167.6, 84.5],
					[175.3, 64.5],
					[170.2, 69.1],
					[190.5, 108.6],
					[177.8, 86.4],
					[190.5, 80.9],
					[177.8, 87.7],
					[184.2, 94.5],
					[176.5, 80.2],
					[177.8, 72.0],
					[180.3, 71.4],
					[171.4, 72.7],
					[172.7, 84.1],
					[172.7, 76.8],
					[177.8, 63.6],
					[177.8, 80.9],
					[182.9, 80.9],
					[170.2, 85.5],
					[167.6, 68.6],
					[175.3, 67.7],
					[165.1, 66.4],
					[185.4, 102.3],
					[181.6, 70.5],
					[172.7, 95.9],
					[190.5, 84.1],
					[179.1, 87.3],
					[175.3, 71.8],
					[170.2, 65.9],
					[193.0, 95.9],
					[171.4, 91.4],
					[177.8, 81.8],
					[177.8, 96.8],
					[167.6, 69.1],
					[167.6, 82.7],
					[180.3, 75.5],
					[182.9, 79.5],
					[176.5, 73.6],
					[186.7, 91.8],
					[188.0, 84.1],
					[188.0, 85.9],
					[177.8, 81.8],
					[174.0, 82.5],
					[177.8, 80.5],
					[171.4, 70.0],
					[185.4, 81.8],
					[185.4, 84.1],
					[188.0, 90.5],
					[188.0, 91.4],
					[182.9, 89.1],
					[176.5, 85.0],
					[175.3, 69.1],
					[175.3, 73.6],
					[188.0, 80.5],
					[188.0, 82.7],
					[175.3, 86.4],
					[170.5, 67.7],
					[179.1, 92.7],
					[177.8, 93.6],
					[175.3, 70.9],
					[182.9, 75.0],
					[170.8, 93.2],
					[188.0, 93.2],
					[180.3, 77.7],
					[177.8, 61.4],
					[185.4, 94.1],
					[168.9, 75.0],
					[185.4, 83.6],
					[180.3, 85.5],
					[174.0, 73.9],
					[167.6, 66.8],
					[182.9, 87.3],
					[160.0, 72.3],
					[180.3, 88.6],
					[167.6, 75.5],
					[186.7, 101.4],
					[175.3, 91.1],
					[175.3, 67.3],
					[175.9, 77.7],
					[175.3, 81.8],
					[179.1, 75.5],
					[181.6, 84.5],
					[177.8, 76.6],
					[182.9, 85.0],
					[177.8, 102.5],
					[184.2, 77.3],
					[179.1, 71.8],
					[176.5, 87.9],
					[188.0, 94.3],
					[174.0, 70.9],
					[167.6, 64.5],
					[170.2, 77.3],
					[167.6, 72.3],
					[188.0, 87.3],
					[174.0, 80.0],
					[176.5, 82.3],
					[180.3, 73.6],
					[167.6, 74.1],
					[188.0, 85.9],
					[180.3, 73.2],
					[167.6, 76.3],
					[183.0, 65.9],
					[183.0, 90.9],
					[179.1, 89.1],
					[170.2, 62.3],
					[177.8, 82.7],
					[179.1, 79.1],
					[190.5, 98.2],
					[177.8, 84.1],
					[180.3, 83.2],
					[180.3, 83.2]
				],
				markPoint: {
					data: [{
						type: 'max',
						name: 'Max'
					}, {
						type: 'min',
						name: 'Min'
					}]
				},
				markLine: {
					data: [{
						type: 'average',
						name: 'Mean'
					}]
				}
			}]
		});

	}

	//echart Bar Horizontal

	if ($('#echart_bar_horizontal').length) {

		var echartBar = echarts.init(document.getElementById('echart_bar_horizontal'), theme);

		echartBar.setOption({
			title: {
				text: 'Bar Graph',
				subtext: 'Graph subtitle'
			},
			tooltip: {
				trigger: 'axis'
			},
			legend: {
				x: 100,
				data: ['2015', '2016']
			},
			toolbox: {
				show: true,
				feature: {
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			calculable: true,
			xAxis: [{
				type: 'value',
				boundaryGap: [0, 0.01]
			}],
			yAxis: [{
				type: 'category',
				data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
			}],
			series: [{
				name: '2015',
				type: 'bar',
				data: [18203, 23489, 29034, 104970, 131744, 630230]
			}, {
				name: '2016',
				type: 'bar',
				data: [19325, 23438, 31000, 121594, 134141, 681807]
			}]
		});

	}

	//echart Pie Collapse

	if ($('#echart_pie2').length) {

		var echartPieCollapse = echarts.init(document.getElementById('echart_pie2'), theme);

		echartPieCollapse.setOption({
			tooltip: {
				trigger: 'item',
				formatter: "{a} <br/>{b} : {c} ({d}%)"
			},
			legend: {
				x: 'center',
				y: 'bottom',
				data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6']
			},
			toolbox: {
				show: true,
				feature: {
					magicType: {
						show: true,
						type: ['pie', 'funnel']
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			calculable: true,
			series: [{
				name: 'Area Mode',
				type: 'pie',
				radius: [25, 90],
				center: ['50%', 170],
				roseType: 'area',
				x: '50%',
				max: 40,
				sort: 'ascending',
				data: [{
					value: 10,
					name: 'rose1'
				}, {
					value: 5,
					name: 'rose2'
				}, {
					value: 15,
					name: 'rose3'
				}, {
					value: 25,
					name: 'rose4'
				}, {
					value: 20,
					name: 'rose5'
				}, {
					value: 35,
					name: 'rose6'
				}]
			}]
		});

	}

	//echart Donut

	if ($('#echart_donut').length) {

		var echartDonut = echarts.init(document.getElementById('echart_donut'), theme);

		echartDonut.setOption({
			tooltip: {
				trigger: 'item',
				formatter: "{a} <br/>{b} : {c} ({d}%)"
			},
			calculable: true,
			legend: {
				x: 'center',
				y: 'bottom',
				data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine']
			},
			toolbox: {
				show: true,
				feature: {
					magicType: {
						show: true,
						type: ['pie', 'funnel'],
						option: {
							funnel: {
								x: '25%',
								width: '50%',
								funnelAlign: 'center',
								max: 1548
							}
						}
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			series: [{
				name: 'Access to the resource',
				type: 'pie',
				radius: ['35%', '55%'],
				itemStyle: {
					normal: {
						label: {
							show: true
						},
						labelLine: {
							show: true
						}
					},
					emphasis: {
						label: {
							show: true,
							position: 'center',
							textStyle: {
								fontSize: '14',
								fontWeight: 'normal'
							}
						}
					}
				},
				data: [{
					value: 335,
					name: 'Direct Access'
				}, {
					value: 310,
					name: 'E-mail Marketing'
				}, {
					value: 234,
					name: 'Union Ad'
				}, {
					value: 135,
					name: 'Video Ads'
				}, {
					value: 1548,
					name: 'Search Engine'
				}]
			}]
		});

	}

	//echart Pie

	if ($('#echart_pie').length) {

		var echartPie = echarts.init(document.getElementById('echart_pie'), theme);

		echartPie.setOption({
			tooltip: {
				trigger: 'item',
				formatter: "{a} <br/>{b} : {c} ({d}%)"
			},
			legend: {
				x: 'center',
				y: 'bottom',
				data: ['Direct Access', 'E-mail Marketing', 'Union Ad', 'Video Ads', 'Search Engine']
			},
			toolbox: {
				show: true,
				feature: {
					magicType: {
						show: true,
						type: ['pie', 'funnel'],
						option: {
							funnel: {
								x: '25%',
								width: '50%',
								funnelAlign: 'left',
								max: 1548
							}
						}
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			calculable: true,
			series: [{
				name: '访问来源',
				type: 'pie',
				radius: '55%',
				center: ['50%', '48%'],
				data: [{
					value: 335,
					name: 'Direct Access'
				}, {
					value: 310,
					name: 'E-mail Marketing'
				}, {
					value: 234,
					name: 'Union Ad'
				}, {
					value: 135,
					name: 'Video Ads'
				}, {
					value: 1548,
					name: 'Search Engine'
				}]
			}]
		});

		var dataStyle = {
			normal: {
				label: {
					show: false
				},
				labelLine: {
					show: false
				}
			}
		};

		var placeHolderStyle = {
			normal: {
				color: 'rgba(0,0,0,0)',
				label: {
					show: false
				},
				labelLine: {
					show: false
				}
			},
			emphasis: {
				color: 'rgba(0,0,0,0)'
			}
		};

	}

	//echart Mini Pie

	if ($('#echart_mini_pie').length) {

		var echartMiniPie = echarts.init(document.getElementById('echart_mini_pie'), theme);

		echartMiniPie.setOption({
			title: {
				text: 'Chart #2',
				subtext: 'From ExcelHome',
				sublink: 'http://e.weibo.com/1341556070/AhQXtjbqh',
				x: 'center',
				y: 'center',
				itemGap: 20,
				textStyle: {
					color: 'rgba(30,144,255,0.8)',
					fontFamily: '微软雅黑',
					fontSize: 35,
					fontWeight: 'bolder'
				}
			},
			tooltip: {
				show: true,
				formatter: "{a} <br/>{b} : {c} ({d}%)"
			},
			legend: {
				orient: 'vertical',
				x: 170,
				y: 45,
				itemGap: 12,
				data: ['68%Something #1', '29%Something #2', '3%Something #3'],
			},
			toolbox: {
				show: true,
				feature: {
					mark: {
						show: true
					},
					dataView: {
						show: true,
						title: "Text View",
						lang: [
							"Text View",
							"Close",
							"Refresh",
						],
						readOnly: false
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			series: [{
				name: '1',
				type: 'pie',
				clockWise: false,
				radius: [105, 130],
				itemStyle: dataStyle,
				data: [{
					value: 68,
					name: '68%Something #1'
				}, {
					value: 32,
					name: 'invisible',
					itemStyle: placeHolderStyle
				}]
			}, {
				name: '2',
				type: 'pie',
				clockWise: false,
				radius: [80, 105],
				itemStyle: dataStyle,
				data: [{
					value: 29,
					name: '29%Something #2'
				}, {
					value: 71,
					name: 'invisible',
					itemStyle: placeHolderStyle
				}]
			}, {
				name: '3',
				type: 'pie',
				clockWise: false,
				radius: [25, 80],
				itemStyle: dataStyle,
				data: [{
					value: 3,
					name: '3%Something #3'
				}, {
					value: 97,
					name: 'invisible',
					itemStyle: placeHolderStyle
				}]
			}]
		});

	}

	//echart Map

	if ($('#echart_world_map').length) {

		var echartMap = echarts.init(document.getElementById('echart_world_map'), theme);


		echartMap.setOption({
			title: {
				text: 'World Population (2010)',
				subtext: 'from United Nations, Total population, both sexes combined, as of 1 July (thousands)',
				x: 'center',
				y: 'top'
			},
			tooltip: {
				trigger: 'item',
				formatter: function (params) {
					var value = (params.value + '').split('.');
					value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + '.' + value[1];
					return params.seriesName + '<br/>' + params.name + ' : ' + value;
				}
			},
			toolbox: {
				show: true,
				orient: 'vertical',
				x: 'right',
				y: 'center',
				feature: {
					mark: {
						show: true
					},
					dataView: {
						show: true,
						title: "Text View",
						lang: [
							"Text View",
							"Close",
							"Refresh",
						],
						readOnly: false
					},
					restore: {
						show: true,
						title: "Restore"
					},
					saveAsImage: {
						show: true,
						title: "Save Image"
					}
				}
			},
			dataRange: {
				min: 0,
				max: 1000000,
				text: ['High', 'Low'],
				realtime: false,
				calculable: true,
				color: ['#087E65', '#26B99A', '#CBEAE3']
			},
			series: [{
				name: 'World Population (2010)',
				type: 'map',
				mapType: 'world',
				roam: false,
				mapLocation: {
					y: 60
				},
				itemStyle: {
					emphasis: {
						label: {
							show: true
						}
					}
				},
				data: [{
					name: 'Afghanistan',
					value: 28397.812
				}, {
					name: 'Angola',
					value: 19549.124
				}, {
					name: 'Albania',
					value: 3150.143
				}, {
					name: 'United Arab Emirates',
					value: 8441.537
				}, {
					name: 'Argentina',
					value: 40374.224
				}, {
					name: 'Armenia',
					value: 2963.496
				}, {
					name: 'French Southern and Antarctic Lands',
					value: 268.065
				}, {
					name: 'Australia',
					value: 22404.488
				}, {
					name: 'Austria',
					value: 8401.924
				}, {
					name: 'Azerbaijan',
					value: 9094.718
				}, {
					name: 'Burundi',
					value: 9232.753
				}, {
					name: 'Belgium',
					value: 10941.288
				}, {
					name: 'Benin',
					value: 9509.798
				}, {
					name: 'Burkina Faso',
					value: 15540.284
				}, {
					name: 'Bangladesh',
					value: 151125.475
				}, {
					name: 'Bulgaria',
					value: 7389.175
				}, {
					name: 'The Bahamas',
					value: 66402.316
				}, {
					name: 'Bosnia and Herzegovina',
					value: 3845.929
				}, {
					name: 'Belarus',
					value: 9491.07
				}, {
					name: 'Belize',
					value: 308.595
				}, {
					name: 'Bermuda',
					value: 64.951
				}, {
					name: 'Bolivia',
					value: 716.939
				}, {
					name: 'Brazil',
					value: 195210.154
				}, {
					name: 'Brunei',
					value: 27.223
				}, {
					name: 'Bhutan',
					value: 716.939
				}, {
					name: 'Botswana',
					value: 1969.341
				}, {
					name: 'Central African Republic',
					value: 4349.921
				}, {
					name: 'Canada',
					value: 34126.24
				}, {
					name: 'Switzerland',
					value: 7830.534
				}, {
					name: 'Chile',
					value: 17150.76
				}, {
					name: 'China',
					value: 1359821.465
				}, {
					name: 'Ivory Coast',
					value: 60508.978
				}, {
					name: 'Cameroon',
					value: 20624.343
				}, {
					name: 'Democratic Republic of the Congo',
					value: 62191.161
				}, {
					name: 'Republic of the Congo',
					value: 3573.024
				}, {
					name: 'Colombia',
					value: 46444.798
				}, {
					name: 'Costa Rica',
					value: 4669.685
				}, {
					name: 'Cuba',
					value: 11281.768
				}, {
					name: 'Northern Cyprus',
					value: 1.468
				}, {
					name: 'Cyprus',
					value: 1103.685
				}, {
					name: 'Czech Republic',
					value: 10553.701
				}, {
					name: 'Germany',
					value: 83017.404
				}, {
					name: 'Djibouti',
					value: 834.036
				}, {
					name: 'Denmark',
					value: 5550.959
				}, {
					name: 'Dominican Republic',
					value: 10016.797
				}, {
					name: 'Algeria',
					value: 37062.82
				}, {
					name: 'Ecuador',
					value: 15001.072
				}, {
					name: 'Egypt',
					value: 78075.705
				}, {
					name: 'Eritrea',
					value: 5741.159
				}, {
					name: 'Spain',
					value: 46182.038
				}, {
					name: 'Estonia',
					value: 1298.533
				}, {
					name: 'Ethiopia',
					value: 87095.281
				}, {
					name: 'Finland',
					value: 5367.693
				}, {
					name: 'Fiji',
					value: 860.559
				}, {
					name: 'Falkland Islands',
					value: 49.581
				}, {
					name: 'France',
					value: 63230.866
				}, {
					name: 'Gabon',
					value: 1556.222
				}, {
					name: 'United Kingdom',
					value: 62066.35
				}, {
					name: 'Georgia',
					value: 4388.674
				}, {
					name: 'Ghana',
					value: 24262.901
				}, {
					name: 'Guinea',
					value: 10876.033
				}, {
					name: 'Gambia',
					value: 1680.64
				}, {
					name: 'Guinea Bissau',
					value: 10876.033
				}, {
					name: 'Equatorial Guinea',
					value: 696.167
				}, {
					name: 'Greece',
					value: 11109.999
				}, {
					name: 'Greenland',
					value: 56.546
				}, {
					name: 'Guatemala',
					value: 14341.576
				}, {
					name: 'French Guiana',
					value: 231.169
				}, {
					name: 'Guyana',
					value: 786.126
				}, {
					name: 'Honduras',
					value: 7621.204
				}, {
					name: 'Croatia',
					value: 4338.027
				}, {
					name: 'Haiti',
					value: 9896.4
				}, {
					name: 'Hungary',
					value: 10014.633
				}, {
					name: 'Indonesia',
					value: 240676.485
				}, {
					name: 'India',
					value: 1205624.648
				}, {
					name: 'Ireland',
					value: 4467.561
				}, {
					name: 'Iran',
					value: 240676.485
				}, {
					name: 'Iraq',
					value: 30962.38
				}, {
					name: 'Iceland',
					value: 318.042
				}, {
					name: 'Israel',
					value: 7420.368
				}, {
					name: 'Italy',
					value: 60508.978
				}, {
					name: 'Jamaica',
					value: 2741.485
				}, {
					name: 'Jordan',
					value: 6454.554
				}, {
					name: 'Japan',
					value: 127352.833
				}, {
					name: 'Kazakhstan',
					value: 15921.127
				}, {
					name: 'Kenya',
					value: 40909.194
				}, {
					name: 'Kyrgyzstan',
					value: 5334.223
				}, {
					name: 'Cambodia',
					value: 14364.931
				}, {
					name: 'South Korea',
					value: 51452.352
				}, {
					name: 'Kosovo',
					value: 97.743
				}, {
					name: 'Kuwait',
					value: 2991.58
				}, {
					name: 'Laos',
					value: 6395.713
				}, {
					name: 'Lebanon',
					value: 4341.092
				}, {
					name: 'Liberia',
					value: 3957.99
				}, {
					name: 'Libya',
					value: 6040.612
				}, {
					name: 'Sri Lanka',
					value: 20758.779
				}, {
					name: 'Lesotho',
					value: 2008.921
				}, {
					name: 'Lithuania',
					value: 3068.457
				}, {
					name: 'Luxembourg',
					value: 507.885
				}, {
					name: 'Latvia',
					value: 2090.519
				}, {
					name: 'Morocco',
					value: 31642.36
				}, {
					name: 'Moldova',
					value: 103.619
				}, {
					name: 'Madagascar',
					value: 21079.532
				}, {
					name: 'Mexico',
					value: 117886.404
				}, {
					name: 'Macedonia',
					value: 507.885
				}, {
					name: 'Mali',
					value: 13985.961
				}, {
					name: 'Myanmar',
					value: 51931.231
				}, {
					name: 'Montenegro',
					value: 620.078
				}, {
					name: 'Mongolia',
					value: 2712.738
				}, {
					name: 'Mozambique',
					value: 23967.265
				}, {
					name: 'Mauritania',
					value: 3609.42
				}, {
					name: 'Malawi',
					value: 15013.694
				}, {
					name: 'Malaysia',
					value: 28275.835
				}, {
					name: 'Namibia',
					value: 2178.967
				}, {
					name: 'New Caledonia',
					value: 246.379
				}, {
					name: 'Niger',
					value: 15893.746
				}, {
					name: 'Nigeria',
					value: 159707.78
				}, {
					name: 'Nicaragua',
					value: 5822.209
				}, {
					name: 'Netherlands',
					value: 16615.243
				}, {
					name: 'Norway',
					value: 4891.251
				}, {
					name: 'Nepal',
					value: 26846.016
				}, {
					name: 'New Zealand',
					value: 4368.136
				}, {
					name: 'Oman',
					value: 2802.768
				}, {
					name: 'Pakistan',
					value: 173149.306
				}, {
					name: 'Panama',
					value: 3678.128
				}, {
					name: 'Peru',
					value: 29262.83
				}, {
					name: 'Philippines',
					value: 93444.322
				}, {
					name: 'Papua New Guinea',
					value: 6858.945
				}, {
					name: 'Poland',
					value: 38198.754
				}, {
					name: 'Puerto Rico',
					value: 3709.671
				}, {
					name: 'North Korea',
					value: 1.468
				}, {
					name: 'Portugal',
					value: 10589.792
				}, {
					name: 'Paraguay',
					value: 6459.721
				}, {
					name: 'Qatar',
					value: 1749.713
				}, {
					name: 'Romania',
					value: 21861.476
				}, {
					name: 'Russia',
					value: 21861.476
				}, {
					name: 'Rwanda',
					value: 10836.732
				}, {
					name: 'Western Sahara',
					value: 514.648
				}, {
					name: 'Saudi Arabia',
					value: 27258.387
				}, {
					name: 'Sudan',
					value: 35652.002
				}, {
					name: 'South Sudan',
					value: 9940.929
				}, {
					name: 'Senegal',
					value: 12950.564
				}, {
					name: 'Solomon Islands',
					value: 526.447
				}, {
					name: 'Sierra Leone',
					value: 5751.976
				}, {
					name: 'El Salvador',
					value: 6218.195
				}, {
					name: 'Somaliland',
					value: 9636.173
				}, {
					name: 'Somalia',
					value: 9636.173
				}, {
					name: 'Republic of Serbia',
					value: 3573.024
				}, {
					name: 'Suriname',
					value: 524.96
				}, {
					name: 'Slovakia',
					value: 5433.437
				}, {
					name: 'Slovenia',
					value: 2054.232
				}, {
					name: 'Sweden',
					value: 9382.297
				}, {
					name: 'Swaziland',
					value: 1193.148
				}, {
					name: 'Syria',
					value: 7830.534
				}, {
					name: 'Chad',
					value: 11720.781
				}, {
					name: 'Togo',
					value: 6306.014
				}, {
					name: 'Thailand',
					value: 66402.316
				}, {
					name: 'Tajikistan',
					value: 7627.326
				}, {
					name: 'Turkmenistan',
					value: 5041.995
				}, {
					name: 'East Timor',
					value: 10016.797
				}, {
					name: 'Trinidad and Tobago',
					value: 1328.095
				}, {
					name: 'Tunisia',
					value: 10631.83
				}, {
					name: 'Turkey',
					value: 72137.546
				}, {
					name: 'United Republic of Tanzania',
					value: 44973.33
				}, {
					name: 'Uganda',
					value: 33987.213
				}, {
					name: 'Ukraine',
					value: 46050.22
				}, {
					name: 'Uruguay',
					value: 3371.982
				}, {
					name: 'United States of America',
					value: 312247.116
				}, {
					name: 'Uzbekistan',
					value: 27769.27
				}, {
					name: 'Venezuela',
					value: 236.299
				}, {
					name: 'Vietnam',
					value: 89047.397
				}, {
					name: 'Vanuatu',
					value: 236.299
				}, {
					name: 'West Bank',
					value: 13.565
				}, {
					name: 'Yemen',
					value: 22763.008
				}, {
					name: 'South Africa',
					value: 51452.352
				}, {
					name: 'Zambia',
					value: 13216.985
				}, {
					name: 'Zimbabwe',
					value: 13076.978
				}]
			}]
		});

	}

}


$(document).ready(function () {

	init_sparklines();
	init_flot_chart();
	init_sidebar();
	init_wysiwyg();
	init_InputMask();
	init_JQVmap();
	init_cropper();
	init_knob();
	init_IonRangeSlider();
	init_ColorPicker();
	init_TagsInput();
	init_parsley();
	init_daterangepicker();
	init_daterangepicker_right();
	init_daterangepicker_single_call();
	init_daterangepicker_reservation();
	init_SmartWizard();
	init_EasyPieChart();
/*	init_charts();*/
	init_echarts();
	init_morris_charts();
	init_skycons();
	init_select2();
	init_validator();
	init_DataTables();
	init_chart_doughnut();
	init_gauge();
    //init_PNotify();
	init_starrr();
	init_calendar();
	init_compose();
	init_CustomNotification();
	init_autosize();
	init_autocomplete();

});


