$( document ).ready( function() {

	// Setup Clock
	var mcpClock = $("#clock");
	if ( mcpClock.length ){
		setInterval(function(){
			mcpClock.html(moment().tz(mcpClock.attr('data-timezone')).format("HH:mm:ss") + " " + mcpClock.attr('data-timezone'));
		},500);
	}

	//Setup Datepickers
	if ( $( "input[type='datepicker']" ).length ) {

		$( "input[type='datepicker']" ).datetimepicker({

            format        : 'dd/mm/yy hh:ii',
            autoclose     : true,
            todayBtn      : true,
            todayHighlight: true,
            minuteStep    : 1

        }).on( 'focus', function( e ) {

			$( this ).blur();

		});
	}


	$( "a[href],input[type='submit'],button[type='submit']" )
		.not( "[href^='#'],[href^=javascript],a[onclick],a[target=_blank],a[target='_BLANK'],.noloading,.preload,.ui-spinner-button,#flowplayer a" )
		.click(
			function( e ) {
				if ( !e.ctrlKey && !e.metaKey && !e.shiftKey ) { InterfaceLoadingShow(); }
			}
		)

	$( document ).keyup( function( e ) {

		// Escape (ESC)
		if ( e.keyCode == 27 ) { InterfaceLoadingHide(); }

	});


	/*
	 * Flash Messages
	 */
	window.processFlashMessages();

});

function processFlashMessages(){

	var flashMessages = $(".flashMessages div.flashMessage");
	var flashMessageTimeout = 2000;
	if ( flashMessages.length > 0 ){
		flashMessages.each(function(){
			flashMessageTimeout += 1750;
			setTimeout(() => $(this).animate({opacity: 0}, 750, ()=>$(this).hide()), flashMessageTimeout);
			$(this).on('mouseover click', function(){
				$(this).animate({opacity: 0}, 750, () => $(this).hide());
			})
		})
	}
}
function flashMessage(message,level){
	var icon = (level==='success' ? 'check' : (level==='danger' ? 'times' : 'info'));
	$(".flashMessages").append("<div class='flashMessage alert alert-" + level + "' style='min-width: 350px;'><i class='fa fa-"+icon+"' style='margin-right: 10px;'></i>"+message+"</div>");
	window.processFlashMessages();
}

function InterfaceLoadingShow() {

	$( "html body" ).prepend( "<div class=\"PageDimmer\"><span></span></div>" );

};

function InterfaceLoadingHide() {

	$( ".PageDimmer" ).remove();

};

function AdminServiceSuspend( ServiceID ) {

	var Reason      = prompt( "Suspend Reason:" );
	window.location = "/page/admin/servers/view/" + encodeURIComponent( ServiceID ) + "?action=suspend&reason=" + encodeURIComponent( Reason );

};

function InputSlider(input,displayDIV,config){

	if ( window.console ) console.log(config);


	if ( config.value > config.max ){
		config.value = config.max;
	}

	if ( config.step == 'auto' ){
		config.step = Math.floor(config.max * 0.05);
		console.log(config.step);
	}

	var prefix = "";
	var postfix = "";
	if ( config.prefix ){ prefix = " " + config.prefix; delete config.prefix; }
	if ( config.postfix ){ postfix = " " + config.postfix; delete config.postfix; }

	$(input).attr('data-prefix', prefix);$(displayDIV).attr('data-prefix', prefix);
	$(input).attr('data-postfix', postfix);$(displayDIV).attr('data-postfix', postfix);

	config.create = function() {
		$(this).attr('data-prefix', prefix);
		$(this).attr('data-postfix', postfix);

		var displayText = prefix + $( this ).slider( "value" ) + postfix;
		if ( config.hasUnlimited && $( this ).slider( "value" ) == 0) displayText = "Unlimited";
		$(displayDIV + " .ui-slider-handle").text( displayText );
		$(input).val( config.value );
	};
	config.slide = function( event, ui ) {
		var displayText = prefix + ui.value + postfix;
		if ( config.hasUnlimited && ui.value == 0) displayText = "Unlimited";
		$(displayDIV + " .ui-slider-handle").text( displayText );
		$(input).val(  ui.value  );
	};
	$( displayDIV ).slider(config);

	$(input).keyup(function(){
		var displayText = $(this).attr('data-prefix') + $(this).val() + $(this).attr('data-postfix');
		if ( config.hasUnlimited && $(this).val()== 0) displayText = "Unlimited";
		$(displayDIV).slider({value: $(this).val()});
		$(displayDIV + " .ui-slider-handle").text( displayText );
	});

}

function InputDurationPicker(MainID,HourID,MinuteID,SecondID,MaxHours){

	$('#' + SecondID).spinner({
		spin: function (event, ui) {
			var value = ui.value
			if (ui.value >= 60) {
				value = ui.value - 60;
				$(this).spinner('value', ui.value - 60);
				$('#' + MinuteID).spinner('stepUp');
				return false;
			} else if (ui.value < 0) {
				value = ui.value + 60;
				$(this).spinner('value', ui.value + 60);
				$('#' + MinuteID).spinner('stepDown');
				return false;
			}
			InputDurationPickerCalc(MainID,$("#"+HourID).val(), $("#"+MinuteID).val(), value);
		}
	});
	$('#' + MinuteID).spinner({
		spin: function (event, ui) {
			var value = ui.value
			if (ui.value >= 60) {
				value = ui.value - 60;
				$(this).spinner('value', ui.value - 60);
				$('#ndvrhours').spinner('stepUp');
				return false;
			} else if (ui.value < 0) {
				value = ui.value + 60;
				$(this).spinner('value', ui.value + 60);
				$('#ndvrhours').spinner('stepDown');
				return false;
			}
			InputDurationPickerCalc(MainID,$("#" + HourID).val(), value, $("#"+SecondID).val());
		}
	});
	$('#'+HourID).spinner({
		min: 0,
		max: MaxHours,
		spin: function (event, ui) {
			InputDurationPickerCalc(MainID,ui.value, $("#" + MinuteID).val(), $("#"+SecondID).val());
		}
	});

	// Set Default Values
	var Default = new Date($('#'+MainID).val() * 1000).toISOString().substr(11, 8).split(':');
	$('#'+HourID).val(Default[0]);
	$('#'+MinuteID).val(Default[1]);
	$('#'+SecondID).val(Default[2]);
}

function InputDurationPickerCalc(MainID, hour,min,sec){
	hour = hour * 1;
	min = min * 1;
	sec = sec * 1;
	$("#"+MainID).val(
		(hour*3600)+(min*60)+sec
	);
}

	function calc_timestamp()
	{
		var day_index = document.forms['server'].expire_day;
		var day = day_index.options[day_index.selectedIndex].text;

		var month_index = document.forms['server'].expire_month;
		var month = month_index.options[month_index.selectedIndex].text;

		var year_index = document.forms['server'].expire_year;
		var year= year_index.options[year_index.selectedIndex].text;

		var timestamp = Date.UTC(year, month-1, day) / 1000; // into seconds from milliseconds, month-1 as the months seem to start at zero rather than 1

		document.forms['server'].server_expire.options[0] = new Option("<?php echo $lang['use_above_date'];?>", timestamp);
		document.forms['server'].server_expire.options[0].selected = true;
	}

function days()
{
	var month_index = document.forms['server'].expire_month;
	var sel_month = month_index.options[month_index.selectedIndex].value;

	var month = new Array();
	month[1] = 31;month[2] = 29;month[3] = 31;month[4] = 31;month[5] = 31;month[6] = 30;
	month[7] = 31;month[8] = 31;month[9] = 30;month[10] = 31;month[11] = 30;month[12] = 31;

	var listdays = document.forms['server'].expire_day.options.length;
	if ( listdays > month[sel_month] )
	{
		for(day=listdays; day>month[sel_month]; day--)
		{
			document.forms['server'].expire_day.options[day-1] = null;
		}
	}else if ( listdays < month[sel_month] ){
		for(day=listdays+1; day<=month[sel_month]; day++)
		{
			document.forms['server'].expire_day.options[day-1] = new Option(day, day);
		}
	}
}

function toggleAllRadioByName(Name){

	var checkBoxes = document.getElementsByName(Name);

	for(var i = checkBoxes.length-1; i>=0; i--)
	{
		checkBoxes[i].checked = true;
	}
}

function copyToClipboard(){
		$(this).addClass('active');
		var inputElement = $(this).find('input,textarea,a')[0];
		navigator.clipboard.writeText(inputElement.nodeName == 'A' ? inputElement.textContent.trim() : inputElement.value.trim());
		$(inputElement).addClass('clipboard-copied');
		$(this).find('span').html(' COPIED');

		var oThis = $(this);
		setTimeout(function(){
			$('[data-clipboard-snippet]').removeClass('active');
			$('[data-clipboard-snippet] span').html('');
			$(inputElement).removeClass('clipboard-copied');
		},1000);
}
function initClipboard(){
	$('.clipboard')
		.bind('click',copyToClipboard)
		.each(function () {
			$(this).prepend('<button class="btn" data-clipboard-snippet=""><i class="far fa-copy"></i><span></span></button>');
		});
}
$( document ).ready( function() {
	initClipboard();
});

function toggleDarkMode(){
	console.log(localStorage.getItem('theme'));
	if (localStorage.getItem("theme") === 'dark') {
		document.body.classList.remove("dark-mode");
		localStorage.setItem("theme", 'light');
	} else {
		document.body.classList.add("dark-mode");
		localStorage.setItem("theme", 'dark');
	}
}